AWT基础
AWT:抽象窗口工具包,java用来建立图形化用户界面(GUI)的开发包。主要包括:组件(Component)、容器(Container)和布局管理器(LayoutManager)。
// 窗口(Frame)
import java.awt.*;
import java.awt.event.*;
class FirstFrame extends Frame{
public FirstFrame( String str ){ super( str ); }
public static void main( String[] args ){
FirstFrame fr = new FirstFrame( "First contianer!" ); // 设置窗口标题
fr.setBackground( Color.yellow ); // 设置背景颜色,默认为白色
fr.setSize( 240, 240 ); // 设置大小
fr.setVisible( true ); // 设置可见
fr.addWindowListener( new WindowAdapter(){ // 关闭窗口
public void windowClosing( WindowEvent e ){ System.exit( 0 ); }
});
}
}
public class Test0601{
public static void main( String[] args ){
FirstFrame.main( args );
}
}
// 面板(Panel)
import java.awt.*;
import java.awt.event.*;
class PanelInFrame extends Frame{
public PanelInFrame( String str ){ super( str ); }
public static void main( String[] args ){
PanelInFrame fr = new PanelInFrame( "Frame with Panel" );
Panel pan = new Panel();
fr.setSize( 200, 200 );
fr.setBackground( Color.yellow );
fr.setLayout( null ); // 取消布局管理器
pan.setSize( 100, 100 );
pan.setBackground( Color.green );
fr.add( pan );
fr.setVisible( true );
fr.addWindowListener( new WindowAdapter(){
public void windowClosing( WindowEvent e ){ System.exit( 0 ); }
});
}
}
public class Test0601{
public static void main( String[] args ){
PanelInFrame.main( args );
}
}
Swing基础
// 静态导入工具类:显示框架
// 《编程思想》这一章例子的基础是静态倒入一个显示框架的工具类,所以必须得用静态导入了。
package util; // SwingConsole.java文件加入到util包下,把util包的路径加到classpath,然后就可以静态导入这个工具类了。
import javax.swing.*; // 比如我的路径为:E:\java\util\SwingConsole.java,就是把"E:\java;"加在classpath变量后面
public class SwingConsole{ // 加入“import static util.SwingConsole.*;”语句就可以静态导入了。
public static void run( final JFrame f, final int width, final int height ){
// SwingUtilities.invokeLater():导致 doRun.run()在AWT事件分派线程上异步执行。
SwingUtilities.invokeLater( new Runnable(){
public void run(){
f.setTitle( f.getClass().getSimpleName() ); // 设置标题为类的简单名
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); // 点关闭操作,执行退出程序命令,默认无操作
f.setSize( width, height ); // 以像素为单位设置视窗尺寸,默认(0,0)
f.setVisible( true ); // 设置视窗可见。默认不可见
}
});
}
}
// 创建窗口
import javax.swing.*;
class HelloSwing{
public static void main( String[] args ){
JFrame frame = new JFrame( "Hello Swing" );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setSize( 300, 100 );
frame.setVisible( true );
}
}
// 创建按钮
import javax.swing.*;
import java.awt.*;
import static util.SwingConsole.*;
class CreateButton extends JFrame{
private JButton b1 = new JButton( "Button 1" ), b2 = new JButton( "Button 2" );
public CreateButton(){
setLayout( new FlowLayout() );
add( b1 ); add( b2 );
}
public static void main( String[] args ){
run( new CreateButton(), 200, 100 );
}
}
public class Test0601{
public static void main( String[] args ){
CreateButton.main( args );
}
}
// 加一个TextField,内部类实现接口处理事件
import javax.swing.*;
import java.awt.*;
import static util.SwingConsole.*;
import java.awt.event.*;
class CreateButton extends JFrame{
private JButton b1 = new JButton( "Button 1" ), b2 = new JButton( "Button 2" );
private JTextField txt = new JTextField( 10 );
class ButtonListener implements ActionListener{
public void actionPerformed( ActionEvent e ){
String name = ( (JButton) e.getSource() ).getText();
txt.setText( name );
}
}
private ButtonListener bl = new ButtonListener();
public CreateButton(){
b1.addActionListener( bl ); b2.addActionListener( bl );
setLayout( new FlowLayout() );
add( b1 ); add( b2 ); add( txt );
}
public static void main( String[] args ){
run( new CreateButton(), 200, 150 );
}
}
public class Test0601{
public static void main( String[] args ){
CreateButton.main( args );
}
}
// 转用匿名内部类
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import static util.SwingConsole.*;
class CreateButton extends JFrame{
private JButton b1 = new JButton( "Button 1" ), b2 = new JButton( "Button 2" );
private JTextField txt = new JTextField( 10 );
private ActionListener bl = new ActionListener(){
public void actionPerformed( ActionEvent e ){
String name = ( ( JButton) e.getSource() ).getText();
txt.setText( name );
}
};
public CreateButton(){
b1.addActionListener( bl ); b2.addActionListener( bl );
setLayout( new FlowLayout() );
add( b1 ); add( b2 ); add( txt );
}
public static void main( String[] args ){
run( new CreateButton(), 200, 150 );
}
}
public class Test0601{
public static void main( String[] args ){
CreateButton.main( args );
}
}
布局管理器
// BorderLayout
import javax.swing.*;
import java.awt.*;
import static util.SwingConsole.*;
class ABorderLayout extends JFrame{
public ABorderLayout(){
add( BorderLayout.NORTH, new JButton( "North" ) );
add( BorderLayout.SOUTH, new JButton( "South" ) );
add( BorderLayout.EAST, new JButton( "East" ) );
add( BorderLayout.WEST, new JButton( "West" ) );
add( BorderLayout.CENTER, new JButton( "Center" ) );
}
public static void main( String[] args ){
run( new ABorderLayout(), 300, 250 );
}
}
public class Test0601{
public static void main( String[] args ){
ABorderLayout.main( args );
}
}
// FlowLayout
import javax.swing.*;
import java.awt.*;
import static util.SwingConsole.*;
class AFlowLayout extends JFrame{
public AFlowLayout(){
setLayout( new FlowLayout() );
for( int i = 0; i < 20; i ++ ) add( new JButton( "Button " + i ) );
}
public static void main( String[] args ){
run( new AFlowLayout(), 300, 350 );
}
}
public class Test0601{
public static void main( String[] args ){
AFlowLayout.main( args );
}
}
// GridLayout
import javax.swing.*;
import java.awt.*;
import static util.SwingConsole.*;
class AGridLayout extends JFrame{
public AGridLayout(){
setLayout( new GridLayout( 7, 3 ) );
for( int i = 0; i < 20; i ++ ) add( new JButton( "Button " + i ) );
}
public static void main( String[] args ){
run( new AGridLayout(), 350 ,300 );
}
}
public class Test0601{
public static void main( String[] args ){
AGridLayout.main( args );
}
}