图形界面的介绍:图形用户界面(Graphics User Interface,GUI)是用户与程序交互的窗口,比命令行的界面更加直观并且更好操作。
Swing:为解决 AWT 存在的问题而新开发的图形界面包。Swing是对AWT的改良和扩展。 不仅提供了AWT 的所有功能,还用纯粹的Java代码对AWT的功能进行了大幅度的扩充,与平台无关。
swing 的组件层次关系
以下为基础的图形界面练习(适合看完图形界面理论知识的练习)
布局思想:整个大体系为Frame(或JFrame)向其中加入框架,框架(panel或JPanel)可以进行布局,框架中可以加入组件(JButton等)。
练习:
BorderLayou布局:
package unit10;
import java.awt.*;
public class Frame12{
public static void main(String[] args)
{
Frame f = new Frame("飞机大战");
f.setLayout(new BorderLayout());
f.add(new Button("North"),BorderLayout.NORTH);
f.add(new Button("South"),BorderLayout.SOUTH);
f.add(new Button("East"),BorderLayout.EAST);
f.add(new Button("West"),BorderLayout.WEST);
f.add(new Button("Center"),BorderLayout.CENTER);
f.setSize(2000,2000);
f.setVisible(true);
}
}
GridLayout布局:
package unit10;
import java.awt.*;
//GridLayout
public class Frame12{
public static void main(String[] args)
{
Frame f = new Frame("GridLayout");
Button[] buttons = new Button[20];
for(int i=0;i<buttons.length;i++)
{
buttons[i] = new Button(""+(i+1));
}
f.setLayout(new GridLayout(4,5));
for(int i=0;i<buttons.length;i++)
{
f.add(buttons[i]);
}
f.setSize(300,300);
f.setVisible(true);
}
}
简单的嵌套布局:
import java.awt.*;
//嵌套布局
public class Frame12{
public static void main(String[] args)
{
Frame f = new Frame("嵌套布局");
Label b0 = new Label("Display Area");
Panel p = new Panel();
p.setLayout(new GridLayout(2,2));
Button b1 = new Button("1");
Button b2 = new Button("2");
Button b3 = new Button("3");
Button b4 = new Button("4");
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
f.add(p,BorderLayout.CENTER);
f.add(b0,BorderLayout.NORTH);
f.pack();
f.setVisible(true);
}
}
按钮监听:
package unit10;
import java.awt.*;
import java.awt.event.*;
public class Frame12{
public static void main(String[] args)
{
Frame f = new Frame("Test");
Button b1 = new Button("Start");
TextField b2 = new TextField("test");
Monitor3 bh = new Monitor3();
b1.addActionListener(bh);
b2.addActionListener(bh);
f.add(b1,"North");
f.add(b2,"Center");
f.pack();
f.setVisible(true);
}
}
class Monitor3 implements ActionListener{
public void actionPerformed(ActionEvent e)
{
System.out.println("a button"+e.getSource()+"has been pressed." + "command is:" + e.getActionCommand());
}
}
下面还是列举一些简单常用的界面化练习:
上代码:
package unit10;
import java.awt.*;
import javax.swing.*;
public class JFrame123 extends JFrame {
int size = 9;
JButton[] jbs = new JButton[size];
public static void main(String[] args)
{
JFrame123 jf = new JFrame123();
}
public JFrame12