java 图形化用户界面

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 );
	}
}

Swing事件模型

Swing组件应用

Swing与并发

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值