在Java中建立一个GUI程序至少需要用到这三类对象:
* 组件
* 事件
* 监听器
PushCounter是一个启动类,只是显示一个按钮(标注为“Push Me!”),按下按钮,计数器更新显示最新结果。
// PushCounter.java
//演示一个图形化的用户接口和监听器
import javax.swing.JFrame;
public class PushCounter {
// 建立一个展示框架
public static void main(String[] args){
JFrame frame = new JFrame("Push Counter");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
PushCounterPanel panel = new PushCounterPanel();
frame.getContentPane().add(panel);
//pack方法根据框架中的内容把框架设置成合适的尺寸
frame.pack();
frame.setVisible(true);
}
}
//PushCounterPanel.java
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class PushCounterPanel extends JPanel {
private int count;
private JButton push;
private JLabel label;
public PushCounterPanel(){
count = 0;
push = new JButton("Push Me!");
push.addActionListener(new ButtonListener());
label = new JLabel("Pushes: " + count);
add(push);
add(label);
setBackground(Color.cyan);
setPreferredSize(new Dimension(300, 40));
}
// 当按钮按下时更新标签
private class ButtonListener implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
count ++;
label.setText("Pushes: " + count);
}
}
}
这个程序中使用的组件包括:一个按钮、显示计数的标签、容纳按钮和标签的面板,以及显示面板的框架。
JFrame就像一座楼,panel就像一个房间,东西放在房间里
图形化的东西有种特殊的吸引力,毕竟是能看到的实实在在的东西。