swing学习笔记(1)

1、所有swing组件必须由事件分派线程进行配置,线程将鼠标点击和按键控制转移到用户接口组件。简单的事件分派线程的代码如下:

public class SimpleFrameTest {
    public static void main(String[] args) {
	EventQueue.invokeLater(() -> {
	    SimpleFrame frame = new SimpleFrame(null);
	    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    frame.setVisible(true);
        });
    }
}
/**
* 这里的SimpleFrame类是自定义的JFrame子类
* EventQueue.invokeLater();方法的参数是一个实现Runnable接口的线程类,这里使用的是lambda表达式
* 
* 这就是事件分派线程的执行代码 EventQueue.invokeLater( ()->{ statements });
* 
* frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);该语句用于选择选择响应动作
* 	定义的是用户关闭框架时的响应动作,对于这个程序而言,只是简单的退出
* 
* 组件最初史可见的,但是JFrame这样的顶层框架组件除外
* 
* 简单的构造框架是不会自动显示出来的,框架起初是不可见的
* 为了显示框架,需要在main方法中调用框架的setVisible方法
* 如果想要显示一个组件,建议调用setVisible方法
* 
* 初始化语句结束后,main方法退出:
* 	注意:main方法退出并没有终止程序,终止的是主线程。然而事件分派线程还处于激活状态,知道关闭框架或者调用System.exit方法才可以终止程序。
* 
*/

class SimpleFrame extends JFrame {
    private static final int detault_width = 300;
    private static final int detault_height = 200;

    public SimpleFrame(GraphicsConfiguration arg0) {
        setSize(detault_width, detault_height);
    }
}

2、框架的定位

(1)setLocation和setBounds方法用于设置框架的位置。对于框架来说,这两个方法的坐标均相对于整个屏幕。

坐标(0,0)位于屏幕的左上角

(2)setIconImage用于告诉窗口系统在标题栏、任务栏切换窗口等位置显示哪个图标。

(3)setTitle用于改变标题栏的文字

(4)setResizable利用一个boolean值确定框架的大小是否允许用于改变

(5)如果在显示窗口之前调用setLocationByPlatform(true);窗口系统会选用窗口的位置而不是窗口的大小,通常是据最后一个显示窗口很小偏移量的位置。

3、框架的属性

框架的属性都有set和get方法,其中对于boolean类型的属性比较特别,它使用的是is方法,而不是set方法(方法命名规则都一样)

4、确定合适的屏幕大小

为了得到屏幕的大小有以下的步骤:

  • 调用Toolkit类的静态方法getDefaultToolkit得到一个Toolkit对象(Toolkit类中包含很多与本地窗口系统打交道的方法)
  • 通过Toolkit对象调用getScreenSize方法,将屏幕大小封装到一个Dimension对象中并返回
  • 获取Dimension对象中屏幕的宽度和高度

代码如下:

public class SizeFrameTest {

	public static void main(String[] args) {
		EventQueue.invokeLater(() -> {
			SimpleFrame frame = new SimpleFrame(null);
			frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			frame.setVisible(true);
		});
	}

}

class SizeFrame extends JFrame {
	public SizeFrame() {
		// 获取屏幕的大小
		Toolkit toolkit = Toolkit.getDefaultToolkit();
		Dimension dimension = toolkit.getScreenSize();
		int screenHeight = dimension.height;
		int scrernWidth = dimension.width;

		// 设置框架的宽和高,让窗口系统选择屏幕位置
		setSize(scrernWidth / 2, screenHeight / 2);
		setLocationByPlatform(true);
		
		//设置图标
		Image image=new ImageIcon("icon.gif").getImage();
		setIconImage(image);
	}
}

5、在组件中显示消息

java中框架被设计为是放置组件的容器,通常情况下,应该在另外一个组件上绘制消息,并将这个组件添加到框架中。

绘制一个组件,需要定义一个扩展(继承)JComponent的类,并覆盖其中的paintComponent方法,该方法有一个Graphics类型的参数,该参数保存着用于绘制图像和文本的设置。在java中,所有的绘制都必须使用Graphics对象,其中包含了绘制图案、图像和文本的方法。

注意:paintComponent方法并非认为调用。在应用程序需要重新绘制图的时候,会自动调用该方法。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值