今天刚学了JAVA中的图形界面,这里来总结一下。

1.简单的例子
JFrame是GUI中的容器
JButton是最常见的组件- 按钮
注意:f.setVisible(true); 会对所有的组件进行渲染,所以一定要放在最后面

现在来用代码来简单介绍一下:

package gui;
import javax.swing.*;
public class TestGUI {

	public static void main(String[] args) {
		//主窗口
		JFrame f = new JFrame("123");
		//主窗体设置大小
		f.setSize(400,300);
		//主窗体设置位置
		f.setLocation(200,200);
		//主窗体的位置设置为绝对位置
		f.setLayout(null);
		//按钮主键
		JButton b = new JButton("666");
		//设置主键位置和大小
		b.setBounds(50,50,280,30);
		//把按钮添加到主窗口中
		f.add(b);
		//关闭窗口时退出程序
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//让窗口变得可见
		f.setVisible(true);
	}
}

上面的代码每一条语句旁边都有实现的具体功能。
运行之后会显示如下图标:
初识图形界面(JAVA)

简单的介绍了图形界面之后,我们通过一道练习来巩固一下。

2.练习-在上次关闭位置启动窗口
要求:比如这次使用这个窗口,导致窗口被移动到了右下角。 关闭这个窗口,下一次再启动的时候,就会自动出现在右下角

思路:启动一个线程,每个100毫秒读取当前的位置信息,保存在文件中,比如123.txt文件。
启动的时候,从这个文件中读取位置信息,如果是空的,就使用默认位置,如果不是空的,就把位置信息设置在窗口上。
读取位置信息的办法: f.getX() 读取横坐标信息,f.getY()读取纵坐标信息。

代码如下:

package gui;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;

public class TestGUI2 {

	public static void main(String[] args) {
		JFrame f = new JFrame("123");
		f.setSize(400,300);
		Point p = getPointFromLocationFile();
		if(p != null) f.setLocation(p.x, p.y);
		else f.setLocation(200,200);
		f.setLayout(null);
		JButton b = new JButton("456");
		b.setBounds(50,50,280,30);
		f.add(b);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);
		new SavingPostionThread(f).start();
	}
	
	static class Point{
		int x;
		int y;
	}
	
	public static Point getPointFromLocationFile() {
		File file = new File("D:/123.txt");
		Point p = null;
		try {
			FileInputStream fis = new FileInputStream(file);
			DataInputStream dis = new DataInputStream(fis);
			int x = dis.readInt();
			int y = dis.readInt();
			p = new Point();
			p.x = x;
			p.y = y;
			dis.close();
			fis.close();
		}catch(FileNotFoundException e) {
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		return p;
	}
}
package gui;

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;

import javax.swing.JFrame;

public class SavingPostionThread extends Thread{
	private JFrame f;
	File file = new File("D:/123.txt");
	SavingPostionThread(JFrame f) {this.f = f;}
	
	public void run() {
		while(true) {
			int x = f.getX();
			int y = f.getY();
			try {
				FileOutputStream fos = new FileOutputStream(file);
				DataOutputStream dos = new DataOutputStream(fos);
				dos.writeInt(x);
				dos.writeInt(y);
				dos.close();
				fos.close();
			}catch(Exception e) {
				e.printStackTrace();
			}
			try {
				Thread.sleep(100);
			}catch(InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

实现结果:
第一次运行出现在设定位置
初识图形界面(JAVA)

现在我要把这个窗口随便拖到一个地方
初识图形界面(JAVA)
现在把窗口关闭然后再次打开:
初识图形界面(JAVA)
出现的位置就是刚才窗口关闭的位置。

总结:
个人觉得这道练习题非常好,把之前学习的内容全部都包括了进来,比如:线程,文件的读写以及异常捕获。

相关文章:

  • 2021-09-07
  • 2021-09-11
  • 2021-09-01
  • 2021-12-18
  • 2022-12-23
  • 2021-11-19
  • 2021-09-21
  • 2021-05-25
猜你喜欢
  • 2021-04-06
  • 2021-11-03
  • 2022-12-23
  • 2021-06-23
  • 2021-12-10
  • 2022-12-23
  • 2022-01-01
相关资源
相似解决方案