GUI类的使用,设计一个歌手评分系统,并通过导出制作形成一个简易的歌手评分软件

常用实用类、组件与事件处理       本案例使用GUI设计,

案例要求:

    (1)采取GUI设计思想实现一个歌手计分系统,系统功能要求:用户在窗口依次输入7个分数,去掉一个最高分和最低分,剩下的分数算出的平均分就是该歌手的最终分数。

(2)实现桌面形成软件,一个简单的成绩判断系统的程序软件。
 

package Try;



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

//主类

public class Gui {
	public static void main (String [] args) {
		WindowOperation win = new WindowOperation();
		win.setBounds(100, 100, 390, 360);   //窗口界面
		win.setTitle("歌手评分系统");           //窗口标题
	}
}

//参考课本239页---注册事件源????????????????
class WindowOperation extends JFrame{
	//-----有如下组件----
	
	//窗口下有七个输入分数的框---
	JTextField inputNo1,inputNo2,inputNo3,inputNo4,inputNo5,inputNo6,inputNo7;
	//类似于控制台的输出文本框,用来输出分数
	JTextArea textShow;
	//JComboBox choiceFuhao----这个不需要使用,属于下拉列表选项
	JComboBox defaultCharacter;  //下拉列表的默认内容
	
	//点击---确定---的按钮
	JButton button;
	
	//监视ItemEvent 事件的监视器    对应的监视器的类 对象名 ;
	OperatorListener operator;
	//监视ActionEvent 事件的监视器    对应的监视器的类 对象名 ;
	ComputerListener computer;
	
	//窗口的打开和关闭方式
	public WindowOperation() {//重写构造方法,初始化对象
		init();              //窗口内容
		setVisible(true);    //窗口可视化
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   //关闭窗口退出程序
	}
	void init () {
		setLayout(new FlowLayout());//布局方式----流式布局方式
		
		//字符宽度为   5
		inputNo1 = new JTextField(5);
		inputNo2 = new JTextField(5);
		inputNo3 = new JTextField(5);
		inputNo4 = new JTextField(5);
		inputNo5 = new JTextField(5);
		inputNo6 = new JTextField(5);
		inputNo7 = new JTextField(5);
		
		//choiceFuhao = new JComboBox   //列表中默认的内容--这里不需要使用
		defaultCharacter = new JComboBox(); //列表中默认的内容为空
		
		button   =new JButton ("最终成绩");//最终成绩的
		defaultCharacter.addItem("去掉最高分和最低分");//列表中默认的内容
		
		
		textShow = new JTextArea (9,30); //文本框大小
		
		operator = new OperatorListener();//监视器
		computer = new ComputerListener();
		
		operator.setJComboBox(defaultCharacter);   
		operator.setWorkTogether(computer);
		
		
		//setJTextFieldOne----自定义方法---把用户输入的内容传递过来
		computer.setJTextFieldOne(inputNo1);
		computer.setJTextFieldTwo(inputNo2);
		computer.setJTextFieldThree(inputNo3);
		computer.setJTextFieldFour(inputNo4);
		computer.setJTextFieldFive(inputNo5);
		computer.setJTextFieldSix(inputNo6);
		computer.setJTextFieldSeven(inputNo7);
		
		computer.setJTextArea(textShow);
		
		defaultCharacter.addItemListener(operator);//监听什么地方
		//defaultCharacter---事件源  ,operator----监视器
		button.addActionListener(computer);
		//button---事件源  ,computer----监视器
		
		add(inputNo1);
		add(inputNo2);
		add(inputNo3);
		add(inputNo4);
		add(inputNo5);
		add(inputNo6);
		add(inputNo7);
		add(defaultCharacter);
		add(button);
		add(new JScrollPane(textShow));//创建文本区对象,添加滚动条
	}
}

//监视器,获取事件源是否被操作
class OperatorListener implements ItemListener{  
	//OperatorListener类实现ItemListener接口
	JComboBox choice;
	ComputerListener workTogether;
	
	public void setJComboBox(JComboBox box) {//重写接口方法
		choice = box;
	}
	public void setWorkTogether(ComputerListener computer) {
		workTogether = computer;
	}
	public void itemStateChanged(ItemEvent e) {
		String character = choice.getSelectedItem().toString();
		workTogether.setCharacter(character);//-------
	}
}


class ComputerListener implements ActionListener{
	JTextField inputNo1,inputNo2,inputNo3,inputNo4,inputNo5,inputNo6,inputNo7;
	JTextArea textShow;
	
	String character;
	public void setJTextFieldOne(JTextField t) {
		inputNo1 = t;
	}
	public void setJTextFieldTwo(JTextField t) {
		inputNo2 = t;
	}
	
	public void setJTextFieldThree(JTextField t) {
		inputNo3 = t;
	}
	public void setJTextFieldFour(JTextField t) {
		inputNo4 = t;
	}
	public void setJTextFieldFive(JTextField t) {
		inputNo5 = t;
	}
	public void setJTextFieldSix(JTextField t) {
		inputNo6 = t;
	}
	public void setJTextFieldSeven(JTextField t) {
		inputNo7 = t;
	}
	public void setJTextArea(JTextArea area) {
		textShow = area;
	}
	public void setCharacter(String s) {
		character = s;
	}
	
	//做一个方法实现计算过程
	public void actionPerformed (ActionEvent e) {
		try {
			
			/*
			double No1 = Double.parseDouble(inputNo1.getText());
			double No2 = Double.parseDouble(inputNo2.getText());
			double No3 = Double.parseDouble(inputNo3.getText());
			double No4 = Double.parseDouble(inputNo4.getText());
			double No5 = Double.parseDouble(inputNo5.getText());
			double No6 = Double.parseDouble(inputNo6.getText());
			double No7 = Double.parseDouble(inputNo7.getText());
			
			double result = 0.0,max = 0.0,min=0.0;
			
			if(No1<No2) {
				max = No1;
			}
			*/
			
			double []num = new double [7];
			num[0] = Double.parseDouble(inputNo1.getText());
			num[1] = Double.parseDouble(inputNo2.getText());
			num[2] = Double.parseDouble(inputNo3.getText());
			num[3] = Double.parseDouble(inputNo4.getText());
			num[4] = Double.parseDouble(inputNo5.getText());
			num[5] = Double.parseDouble(inputNo6.getText());
			num[6] = Double.parseDouble(inputNo7.getText());
			
			double result=0,min=10.0,max=0;
			for(int i=0;i<7;i++) {
				if(max<num[i])
					max=num[i];
				if(min>num[i])
					min=num[i];
				result=result+num[i];
				
			}
			textShow.append("去掉该歌手一个最高分"+max+"和一个最低分"+min);
			textShow.append("最终得分:"+result/5+"\n");
			
		}
		catch(Exception ex) {//捕抓异常
			textShow.append("\n请输入正确的数字字符\n");
		}
	}
}



 

 

实验效果:

 

(2)桌面单独程序可视化操作:

点next 

继续next

next

然后选择主类:操作见下图

点  finish 

提示:

一般来说,规范的写法:一个工程只有一个主类,当我们创建桌面的程序软件时,需要自己选主类到Browse当中。

 

出现警告不用理会。

 

点ok即可创建完成。

如图,打开后这样表示成功做出了一个简单的软件程序。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值