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与并发

发布了29 篇原创文章 · 获赞 4 · 访问量 4790
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览