java的GUI编程实际开发中用的较少,这部分内容了解即可。此处总结了一下基本的代码写作思路
代码模板:GUIDemo.java
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
public class GUIDemo {
//主容器 (相当于一个桌子)
private JFrame frame;
//附属容器 (相当于桌子上的桌布)
private Container container;
//嵌套的容器
private JPanel panel;
//界面中需要用到的各种组件
private JLabel lable1;
private JButton but;
private Timer timer;
public GUIDemo() {
//这里进行窗口的常规属性设置
//设置窗口的标题
frame = new JFrame("TimerTest");
//获得容器中的附属容器
container = frame.getContentPane();
//设置frame的位置
frame.setLocation(100, 100);
//设置frame的大小
frame.setSize(400, 400);
//设置点击关闭后退出这个java程序
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//调用init方法初始化container中的组件
init();
//设置frame可见
frame.setVisible(true);
}
private void init(){
//这里给放到容器中的各种组件进行初始化
//....
//设置容器或者嵌套容器的布局管理器
//....
//把各组组件添加到对应容器中的指定位置
//....
//给界面中需要事件的组件添加事件监听处理
//这样用户在界面中点击或者输入或者选择组件就有对应的代码处功能了
//...
}
public static void main(String[] args) {
new GUIDemo();
}
}
实例:MyFirstGUI.java 实现简易加法计算器
package gui;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class MyFirstGUI {
// 顶级容器(窗口)
private JFrame frame;
// 次级容器
private Container container;
// 按钮
private JButton button;
// Label标签
private JLabel addLabel, eqsLabel;
// 文本输入框
private JTextField f1, f2, f3;
// 构造器,构建外部窗口
public MyFirstGUI() {
// 初始化容器,相当于桌子
frame = new JFrame("this is my first GUI");
// 获得次级容器对象,相当于桌布
container = frame.getContentPane();
// 位置参数
frame.setBounds(300, 200, 400, 300);
// 右击界面右上角红叉可以关闭程序
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
;
// 构建组件对象,并且组装在一起
init();
// 设置界面可以显示,默认容器初始化完成之后是隐藏的
frame.setVisible(true);
}
private void init() {
// 初始化组件
button = new JButton("add");
addLabel = new JLabel("+");
eqsLabel = new JLabel("=");
// 创建文本输入框对象,并设置长度为5
f1 = new JTextField(5);
f2 = new JTextField(5);
f3 = new JTextField(5);
// 设置容器的布局管理器(若不设置,则是覆盖效果)
container.setLayout(new FlowLayout());
// 把组件添加到容器在
container.add(f1);
container.add(addLabel);
container.add(f2);
container.add(eqsLabel);
container.add(f3);
container.add(button);
// 给指定的组件添加事件监听
button.addActionListener(new ActionListener() {
// 当鼠标、点击这个指定按钮的时候,程序会调用这个方法
@Override
public void actionPerformed(ActionEvent e) {
// 拿到第一个输入框中的数组(String转换为double)
double a = Double.parseDouble(f1.getText());
// 拿到第二个输入框中的数组(String转换为double)
double b = Double.parseDouble(f2.getText());
// 相加得到结果
double c = a + b;
// 把结果放到第三个输入框中
f3.setText(c + "");
}
});
}
public static void main(String[] args) {
new MyFirstGUI();
}
}
运行结果: