实验5_图形用户界面

Ex5_1.java

                      练习编写实现简单的文字变换功能的图形界面。

// Ex5_1.java

/**
 * 题目要求:练习编写实现简单的文字变换功能的图形界面。
 * 
 * 设计思路:
 * 1. 从布局上看:该窗口共分上中下三层,
 *    第一层,包含组件一个JTextArea和一个JButton,
 *    第二层,包含组件三个JRadioButton和两个JCheckBox和一个JComboBox,
 *    第三层,只包含一组件JTextArea.
 * 2. 从功能实现上看,
 *        从JTextArea中输入文字,然后,按下JButton,此时,程序响应事件并将
 *    JTextArea中的内容复制至最下层的JTextArea中,随后,可以使用第二层的
 *    JRadioButton和JCheckBox和JComboBox对最下层的JTextArea中的字体调整。
 * 3. 程序设计:
 *    首先,定义三个布局变量,用于管理每一层的组件布局,
 *    然后,给每个组件布局中的组件初始化,
 *    最后,创建内嵌类fontFormatHandler用于监听事件。
 *
 **/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;


public class Ex5_1 extends JFrame
{
// 布局
	private JPanel topFrame;
	private JPanel midFrame;
	private JPanel wholeFrame;

// 最上方组件
	private JTextArea textArea;
	private JButton enterButton;

// 中间组件
	private JRadioButton songFont;
	private JRadioButton diFont;
	private JRadioButton blackFont;
	private ButtonGroup buttonGroup;
	private JCheckBox boldFont;
	private JCheckBox italicFont;
	private String [] pointFontString = new String[]{"16", "18", "20", "24", "26", "28", "30"};
	private JComboBox pointFont;

// 下方组件
	private JTextArea showArea;

// 构造函数
	public Ex5_1(String name){
		super(name);

		topFrameConstruction();
		midFrameConstruction();
		downFrameConstruction();
		
		setBounds(100, 100, 450, 360);
		setFrame();
		setVisible(true);
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

// 布局设定
	private void setFrame(){
		topFrame = new JPanel();
		topFrame.setLayout(null);
		textArea.setBounds(15, 10, 280, 50);
		topFrame.add(textArea);
		enterButton.setBounds(330, 15, 70, 40);
		topFrame.add(enterButton);
		enterButton.setHorizontalAlignment(SwingConstants.CENTER);

		midFrame = new JPanel();
		midFrame.setLayout(new GridLayout(1, 6, 3, 3));
		midFrame.add(songFont);
		midFrame.add(diFont);
		midFrame.add(blackFont);
		midFrame.add(boldFont);
		midFrame.add(italicFont);
		midFrame.add(pointFont);

		wholeFrame = new JPanel();
		wholeFrame.setLayout(null);
		topFrame.setBounds(0, 0, 420, 70);
		wholeFrame.add(topFrame);
		midFrame.setBounds(5, 75, 420, 20);
		wholeFrame.add(midFrame);
		showArea.setBounds(30, 120, 350, 180);
		wholeFrame.add(showArea);

		Container c = getContentPane();
		c.setLayout(new GridLayout(1, 1));
		c.add(wholeFrame);

		return;
	}

// 最上层布局及相关组件初始化
	private void topFrameConstruction(){
		textArea = new JTextArea();
		textArea.setLineWrap(true);
		textArea.setWrapStyleWord(true);
		enterButton = new JButton("输入");
		
		enterHandler h = new enterHandler();	// 创建临听器
		enterButton.addActionListener(h);
		return;
	}

// 中间的布局及相关的组件初始化
	private void midFrameConstruction(){
		songFont = new JRadioButton("宋体", true);
		diFont = new JRadioButton("隶书");
		blackFont = new JRadioButton("黑体");
		buttonGroup = new ButtonGroup();
		buttonGroup.add(songFont);
		buttonGroup.add(diFont);
		buttonGroup.add(blackFont);
		boldFont = new JCheckBox("粗体");
		italicFont = new JCheckBox("斜体");
		pointFont = new JComboBox(pointFontString);
		pointFont.setSelectedIndex(0);

		fontFormatHandler h = new fontFormatHandler();	// 创建监听器
		songFont.addItemListener(h);
		diFont.addItemListener(h);
		blackFont.addItemListener(h);
		boldFont.addItemListener(h);
		italicFont.addItemListener(h);
		pointFont.addItemListener(h);
		return;
	}

// 下方的布局及相关的组件初始化
	private void downFrameConstruction(){
		showArea = new JTextArea();
		showArea.setEditable(false);
		showArea.setLineWrap(true);
		showArea.setWrapStyleWord(true);
		showArea.setBackground(Color.green);
		return;
	}

// 设定两种监听器事件类
	private class enterHandler implements ActionListener
	{
		public void actionPerformed(ActionEvent event){
			showArea.setText(textArea.getText());
			return;
		}
	}

	private class fontFormatHandler implements ItemListener
	{
		public void itemStateChanged(ItemEvent event){
			// 字体类型设置
			String FontName = showArea.getFont().getFontName();
			if (songFont.isSelected()){
				diFont.setSelected(false);
				blackFont.setSelected(false);
				songFont.setSelected(true);
				FontName = "宋体";
			}
			else if(diFont.isSelected()){
				songFont.setSelected(false);
				blackFont.setSelected(false);
				diFont.setSelected(true);
				FontName = "隶书";
			}
			else if(blackFont.isSelected()){
				songFont.setSelected(false);
				diFont.setSelected(false);
				blackFont.setSelected(true);
				FontName = "黑体";
			}

			// 字体风格设置
			if(event.getSource() == boldFont){
				boldFont.setBorderPaintedFlat(!boldFont.isBorderPaintedFlat());
			}
			if(event.getSource() ==  italicFont){
				italicFont.setBorderPaintedFlat(!italicFont.isBorderPaintedFlat());
			}

			int fontStyle = Font.PLAIN;
			if (boldFont.isBorderPaintedFlat()){fontStyle += Font.BOLD;}
			if (italicFont.isBorderPaintedFlat()){fontStyle += Font.ITALIC;}
			
			// 字体大小设置
			int fontPoint = Integer.parseInt(pointFontString[pointFont.getSelectedIndex()]);

			showArea.setFont( new Font(FontName, fontStyle, fontPoint) );

			return;
		}
	}

// 主函数
	public static void main(String[] args)
	{
		Ex5_1 test = new Ex5_1("字体变换窗口演示");
		return;
	}

}	// end-class

 


Ex5_2.java

                 设计一个简单的计算器。

初步UML设计图:

 

 

源代码:

 

// Ex5_2.java

/**
 * 题目要求:设计一个简单的计算器。
 **/

// 注:程序尚未完善,功能未完成,只完成了布局

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;


public class Ex5_2 extends JFrame
{
// 与运算相关的变量
    public String NumberA;
	public String NumberB;
	public String calculateHistory;
	public String calculateResult;

// 布局
	private JPanel topFrame;
	private JPanel downFrame;

// 显示文本框组件
    private JTextArea cHistory;
	private JTextArea cResult;

// 按钮组件
	private JButton num1;
	private JButton num2;
	private JButton num3;
	private JButton num4;
	private JButton num5;
	private JButton num6;
	private JButton num7;
	private JButton num8;
	private JButton num9;
	private JButton num0;
	private JButton operCancel;
	private JButton operClear;
	private JButton operEqual;
	private JButton operPlus;
	private JButton operSub;
	private JButton operMul;
	private JButton operDiv;
	private JButton operSqrt;
	private JButton operSign;
	private JButton operPoint;

// 构造函数
	public Ex5_2(String name){
		super(name);
		buttonConstruction();
		buttonFunction();
		setBounds(100, 100, 330, 250);
		setFrame();
		setVisible(true);
		setResizable(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

// 布局设定
	private void setFrame(){
		topFrame = new JPanel( new GridLayout(2, 1, 0, 0) );
		topFrame.add(cHistory);
		topFrame.add(cResult);
		downFrame = new JPanel( new GridLayout(4, 5, 5, 5) );
		downFrame.add(num7);
		downFrame.add(num8);
		downFrame.add(num9);
		downFrame.add(operDiv);
		downFrame.add(operCancel);
		downFrame.add(num4);
		downFrame.add(num5);
		downFrame.add(num6);
		downFrame.add(operMul);
		downFrame.add(operClear);
		downFrame.add(num1);
		downFrame.add(num2);
		downFrame.add(num3);
		downFrame.add(operSub);
		downFrame.add(operSqrt);
		downFrame.add(num0);
		downFrame.add(operSign);
		downFrame.add(operPoint);
		downFrame.add(operPlus);
		downFrame.add(operEqual);


		Container c = getContentPane();
		c.setLayout(new BorderLayout());
		c.add("North", topFrame);
		c.add("Center", downFrame);
		return;
	}

// 组件初始化
	private void  buttonConstruction(){
		cHistory = new JTextArea();
		cHistory.setEditable(false);
	    cResult = new JTextArea();
		cResult.setEditable(false);
		num1 = new JButton("1");
		num2 = new JButton("2");
		num3 = new JButton("3");
		num4 = new JButton("4");
		num5 = new JButton("5");
		num6 = new JButton("6");
		num7 = new JButton("7");
		num8 = new JButton("8");
		num9 = new JButton("9");
		num0 = new JButton("0");
		operCancel = new JButton("C");
		operClear = new JButton("CE");
		operEqual = new JButton("=");
		operPlus = new JButton("+");
		operSub = new JButton("-");
		operMul = new JButton("*");
		operDiv = new JButton("/");
		operSqrt = new JButton("Sqrt");
		operSign = new JButton("-/+");
		operPoint = new JButton(".");
		return;
	}
	
// 组件功能设置
	private void buttonFunction(){

		return;
	}



// 设定监听器事件类
	private class buttonItemListener implements ActionListener
	{
		public void actionPerformed(ActionEvent event){
			
			return;
		}
	}

// 主函数
	public static void main(String[] args)
	{
		Ex5_2 test = new Ex5_2("简单的计算器");
		return;
	}

}	// end-class


 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值