Hello World
创建一个窗口。
Frame frame = new Frame("first gui"); // 指定窗口标题 frame.setLocation(100, 100); // 设置窗口在屏幕上的位置 frame.setSize(200, 200); // 设置窗口大小
创建五个按钮。
Button b1 = new Button("b1"); Button b2 = new Button("b2"); Button b3 = new Button("b3"); Button b4 = new Button("b4"); Button b5 = new Button("b5");
将这五个按钮按照东西南北中的次序添加进这个窗口中。
frame.add(b1, "East"); // 东 frame.add(b2, "West"); // 西 frame.add(b3, "South"); // 南 frame.add(b4, "North"); // 北 frame.add(b5, "Center"); // 中
设置窗口关闭事件,用到了内部类。如果没有设置这个事件的话,点击窗口的关闭按钮默认不会执行任何动作。
frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } });
设置窗口为可见属性为真,不然窗口显示不出来
frame.setVisible(true);
Panel
一个完整的图形界面程序往往包括好几个部分,这时候就需要布局管理器来单独处理各部分的控件了。
创建一个窗口,并设置下布局
Frame frame = new Frame("second gui"); frame.setSize(400, 400); // 设置窗口大小 frame.setLocation(100, 100); // 设置窗口在屏幕上的位置 frame.setLayout(new GridLayout(2, 2)); // 2x2的布局
创建一个Panel,作为布局的第一部分
Panel panel1 = new Panel(); panel1.setLayout(new BorderLayout()); panel1.add(new Button("East"), "East"); // 东 panel1.add(new Button("West"), "West"); // 西 panel1.add(new Button("South"), "South"); // 南 panel1.add(new Button("North"), "North"); // 北 panel1.add(new Button("Center"), "Center"); // 中 frame.add(panel1);
再创建一个Panel
Panel panel2 = new Panel(); panel2.setLayout(new FlowLayout()); panel2.add(new Button("b1")); panel2.add(new Button("b2")); panel2.add(new Button("b3")); panel2.add(new Button("b4")); panel2.add(new Button("b5")); frame.add(panel2);
再创建两个Panel就可以符合主窗口2x2的布局了,这里就不一一列出代码。设置窗口关闭事件。
frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } });
设置窗口为可见属性为真,不然窗口显示不出来
frame.setVisible(true);
过程感言
- 以前写界面程序用的一直是微软的.net,不考虑跨平台的话,还是.net好用。跨平台的话不知道Qt对比awt/swt怎么样。