# JAVA 实验五: 图形用户界面

# 实验目的

  1. 掌握图形用户界面的要素。
  2. 掌握窗体类。
  3. 掌握布局管理器。
  4. 掌握中间容器类
  5. 掌握事件处理机制。
  6. 掌握图形界面中的基本组件。

# 实验内容

第一部分
编写一个 Java 源程序,其中包含:
编写一个包含主方法 main 的公共类(访问权限为 public 的类),该类继承自窗体类 JFrame,并且,该类实现了接口 ActionListener(实现接口 ActionListener 的方法 actionPerformed)。
源程序实现的任务是实现如下图所示的图形用户界面(当窗口大小改变时,其中的组件的大小也会随之改变),并且完成以下要求:

(1)可以在 “请输入文件路径和名称:” 后面的文本框中输入文件名和路径。
(2)可以在文本区中写文本。
(3)可以在 “请输入需要追加的内容:” 后面的文本域中输入内容,按回车键之后,其中的内容会添加到文本区中(添加的内容另起一行)。
(4)单击 “将文本区的内容写入文件” 按钮,文本区中的内容就会被写到指定的文件中。

第二部分
编写一个 Java 源程序,其中包含:
编写一个包含主方法 main 的公共类(访问权限为 public 的类),该类继承自窗体类 JFrame,并且,该类实现了接口 ActionListener(实现接口 ActionListener 的方法 actionPerformed)。
源程序实现的任务是实现如下图所示的图形用户界面(当窗口大小改变时,第 1 行和第 2 行的组件的大小也会随之改变,其他组件的大小不发生改变),并且完成以下要求:

(1)窗体的标题是 “猜数字小游戏”。
(2)单击 “得到一个随机数” 按钮,系统会产生一个 1~10 之间的随机整数(使用 Math 类的方法 random ( ))。
(3)在 “输入您的猜测:” 后面的文本框中输入你要猜测的整数,之后单击 “确定” 按钮。
(4)对你猜测的整数,图形用户界面的最下面会有提示信息,没有猜的时候,显示 “无反馈信息”,如果猜大了,显示 “猜大了”,如果猜小了,显示 “猜小了”,如果猜对了,显示 “猜对了”。(其中,蓝色字体是 JLabel 类的对象调用方法 setForeground (Color.blue) 实现的。)

# 实验代码

# 第一部分

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Main extends JFrame implements ActionListener
{
	private static final long serialVersionUID = 1L;
	File file;
	FileWriter fileWriter;
	JLabel path=new JLabel("请输入文件路径和名称:");
	JTextField filePath = new JTextField();
	JLabel append = new JLabel("请输入需要追加的内容:");
	JTextField appendContent = new JTextField();
	JButton button=new JButton("将文本区的内容写入文件");
	JTextArea area = new JTextArea();
	Main()
	{
		JPanel north = new JPanel();
		north.setLayout(new GridLayout(3,2,0,5));
		north.add(path);
		north.add(filePath);
		north.add(append);
		north.add(appendContent);
		appendContent.addActionListener(this);
		north.add(button);
		button.addActionListener(this);
		add(north, BorderLayout.NORTH);
		add(new JScrollPane(area), BorderLayout.CENTER);
		setLocation(100, 100);
		setSize(400, 300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
	public void actionPerformed(ActionEvent e)
	{
		Object obj = e.getSource();
		if (obj == button)
		{
			try
			{
			     file = new File(filePath.getText());
			     fileWriter = new FileWriter(file);
			     fileWriter.write(area.getText());
			     fileWriter.flush();
			     fileWriter.close();
			}
			catch(IOException ee)
			{
			     appendContent.setText("文件出现异常");
			}
		}
		else
		{
			String block = appendContent.getText();
			String temp=area.getText();
			if(temp.equals(""))
				area.append(block);
			else
				area.append("\n"+block);
		}
	}
	public static void main(String[] args)
	{
		new Main();
	}
}

# 第二部分

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main extends JFrame implements ActionListener 
{
	private static final long serialVersionUID = 1L;
	JLabel label1 = new JLabel("获取0-10之间的随机数");
	JButton number = new JButton("得到一个随机数");
	JLabel label2 = new JLabel("输入你的猜测");
	JTextField guess = new JTextField();
	JLabel label3 = new JLabel("单击确定按钮");
	JButton ok = new JButton("确定");
	JLabel info = new JLabel();
	Main()
	{
		setTitle("猜数字小游戏");
		setLayout(new GridLayout(3,1));
		JPanel fixer = new JPanel();
		fixer.setLayout(new GridLayout(2, 2));
		fixer.add(label1);
		fixer.add(number);
		number.addActionListener(this);		
		fixer.add(label2);
		fixer.add(guess);		
		add(fixer, BorderLayout.NORTH);
		JPanel p2 = new JPanel();
		p2.setLayout(new FlowLayout());
		p2.add(label3);
		p2.add(ok);
		ok.addActionListener(this);
		add(p2, BorderLayout.CENTER);	
		JPanel p3 = new JPanel();	
		p3.add(info);
		info.setForeground(Color.BLUE);
		info.setText("无反馈信息");
		add(p3, BorderLayout.NORTH);
		setLocation(100, 100);
		setSize(400, 300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
	int gussNumber;
	int myguess;
	public void actionPerformed(ActionEvent e) 
	{
		Object obj = e.getSource();
		if(obj == number) 
		{
			gussNumber =(int)(Math.random()*9)+1;	
		}
		obj = e.getSource();
		if(obj == ok) 
		{	
			myguess = Integer.parseInt(guess.getText());
			if(gussNumber == myguess) 
			{
				info.setForeground(Color.RED);
				info.setText("恭喜你,猜对了!");	
			}
			else if(gussNumber < myguess) 
			{
				info.setText("猜大了");	
			}
			else if(gussNumber > myguess) 
			{
				info.setText("猜小了");		
			}				
		}	
	}
	public static void main(String [] args)
	{
		new Main();
	}
}

# 实验结果

# 第一部分

6

7

8

# 第二部分

9

10

11

12

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Lavender 微信支付

微信支付

Lavender 支付宝

支付宝