一、创建一个简单的加法计算器
package demo01;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;
public class TestJButton extends JFrame implements ActionListener{
JButton numButton[]=new JButton[10];
JButton add=new JButton("加");
JButton equal=new JButton("等于");
JButton clear_show =new JButton("清空");
TestJButton(){
JPanel center=new JPanel();
center.setLayout(new GridLayout(4, 3));
for(int i=0;i<10;i++) {
numButton[i]=new JButton(""+i);
numButton[i].addActionListener(this);
center.add(numButton[i]);
}
center.add(add);
add.addActionListener(this);
center.add(equal);
equal.addActionListener(this);
clear_show.addActionListener(this);
add(clear_show,BorderLayout.NORTH);
add(center,BorderLayout.CENTER);
setTitle("整数加法器");
setLocation(100, 100);
setSize(350, 200);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestJButton();
}
@Override
public void actionPerformed(ActionEvent e) {
JButton curr=(JButton) e.getSource();
if(curr==clear_show) {
clear_show.setText("清空");
setTitle("整数加法器");
}
for(int i=0;i<10;i++) {
if(curr==numButton[i]) {
String content=clear_show.getText();
if(content.equals("清空"))
content=""+i;
else
content+=i;
clear_show.setText(content);
}
}
if(curr==add) {
String content=clear_show.getText();
content+="+";
clear_show.setText(content);
}
if(curr==equal) {
try {
String formula=clear_show.getText();
String[] nums=formula.split("\\+");
int result=0;
for(int i=0;i<nums.length;i++) {
result+=Integer.parseInt(nums[i]);
}
formula+="="+result;
clear_show.setText(formula);
}
catch(Exception ex) {
setTitle("输入错误,请按长按钮清空");
}
}
}
}
package demo01;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Reckoner {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> createAndShowGUI());
}
public static void createAndShowGUI() {
JFrame frame = new JFrame("计算器");
frame.setBounds(100, 200, 500, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//1.设置布局管理器
frame.setLayout(new BorderLayout());
//2.创建上部件
JButton butn = new JButton("清空");
frame.add(butn,BorderLayout.PAGE_START);
//3.创建下部件
//3.1创建一个面板,网格布局
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(4,3));
//3.1创建按钮
JButton []btn=new JButton[10];
String str = "0123456789";
for (int i = 0; i < btn.length; i++) {
btn[i] = new JButton(str.charAt(i) + "");
panel.add(btn[i]);
}
JButton add = new JButton("加");
JButton equal = new JButton("等于");
panel.add(add);
panel.add(equal);
//3.3面板加入窗口
frame.add(panel);
//4.事件处理
//4.1创建监听器
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JButton curr=(JButton) e.getSource();
//清空按钮
if(curr == butn) {
butn.setText("清空");
}
//数字按钮
for(int i = 0;i < 10;i++) {
if(curr == btn[i]) {
String content = butn.getText();
if(content.equals("清空"))
content=""+i;
else
content+=i;
butn.setText(content);
}
}
//加号按钮
if(curr == add) {
String content = butn.getText();
content+="+";
butn.setText(content);
}
//等于按钮
if(curr == equal) {
try {
String formula = butn.getText();
String[] nums = formula.split("\\+");
int result = 0;
for(int i = 0;i<nums.length;i++) {
result += Integer.parseInt(nums[i]);
}
formula += "="+result;
butn.setText(formula);
}
catch(Exception ex) {
System.out.println("输入错误,请按清空按钮");
}
}
}
};
//4.2按钮加上监听器
butn.addActionListener(listener);
add.addActionListener(listener);
equal.addActionListener(listener);
for(int i = 0;i < 9;i++) {
btn[i].addActionListener(listener);
}
}
}
二、可以改变字体大小 、size
package demo02;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TestCheckRadio extends JFrame implements ItemListener {
JCheckBox italic = new JCheckBox("斜体");
JCheckBox bold = new JCheckBox("粗体");
JRadioButton large = new JRadioButton("大字号");
JRadioButton middle = new JRadioButton("中字号");
JRadioButton small = new JRadioButton("小字号");
JTextArea area = new JTextArea();
TestCheckRadio() {
ButtonGroup group = new ButtonGroup();
group.add(large);
group.add(middle);
group.add(small);
setLayout(new GridLayout(1, 2, 10, 0));
JPanel left = new JPanel();
left.setLayout(new GridLayout(5, 1, 0, 10));
left.add(italic);
left.add(bold);
left.add(large);
left.add(middle);
left.add(small);
add(left);
add(area);
Font font = new Font("", 0, 25);
area.setFont(font);
area.setText("我喜欢C++,\n但更喜欢Java");
italic.addItemListener(this);
bold.addItemListener(this);
large.addItemListener(this);
middle.addItemListener(this);
small.addItemListener(this);
setSize(500, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void itemStateChanged(ItemEvent e) {
int size = 25;
if (small.isSelected())
size = 15;
if (large.isSelected())
size = 35;
int type = 0;
if (italic.isSelected())
type = type + Font.ITALIC;
if (bold.isSelected())
type = type + Font.BOLD;
Font font = new Font("", type, size);
area.setFont(font);
}
public static void main(String[] args) {
new TestCheckRadio();
}
}
package demo02;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class Typeface {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> createAndShowGUI());
}
public static void createAndShowGUI() {
JFrame frame = new JFrame();
frame.setBounds(100, 200, 700, 700);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//1.设置布局管理器
frame.setLayout(new GridLayout(1, 2, 10, 0));
//2.创建坐组件
//2.1创建面板
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(5,1,0,10));
//2.2JCheckBox组件
JCheckBox box1 = new JCheckBox("斜体");
panel.add(box1);
JCheckBox box2 = new JCheckBox("粗体");
panel.add(box2);
//2.3JRadioButton组件
JRadioButton button01= new JRadioButton("大字号");
panel.add(button01);
JRadioButton button02= new JRadioButton("中字号");
panel.add(button02);
JRadioButton button03= new JRadioButton("小字号");
panel.add(button03);
//2.4按钮的互斥
ButtonGroup group= new ButtonGroup();
group.add(button01);
group.add(button02);
group.add(button03);
//2.5将面板加入窗体
frame.add(panel);
//3.创建右组件
JTextArea area = new JTextArea("我爱C、C++、Java,\n但我更爱Python。");
frame.add(area);
Font font = new Font("", 0, 25);
area.setFont(font);
//4.事件处理
//4.1创建监听器
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int type = 0;
//斜体
if(box1.isSelected()) {
type += Font.ITALIC;
}
//粗体
if(box2.isSelected()) {
type += Font.BOLD;
}
int size = 25;
//大号字
if(button01.isSelected()) {
size = 35;
}
//中号字
if(button02.isSelected()) {
size = 25;
}
//小号字
if(button03.isSelected()) {
size = 15;
}
Font font = new Font("", type, size);
area.setFont(font);
}
};
//4.2按钮加上监听器
box1.addActionListener(listener);
box2.addActionListener(listener);
button01.addActionListener(listener);
button02.addActionListener(listener);
button03.addActionListener(listener);
}
}