实验报告
实验目的:
1、熟悉GUI设计步骤
2、掌握GUI各个组件的用法
实验要求:
1.使用BorderLayout将JFrame布局分为左右两块;左边使用GridLayout,半酣3个按钮;;右边JLabel里显示一幅幅画,按钮空JLabel是否显示滚动条。
源代码如下:
import javax.swing.*;
import java.awt.*;
public class frameTest{
public static void main(String args[]){
CFrame frame=new CFrame("Frame Test");
Container pane=frame.getContentPane();
pane.add(new leftPanel(),BorderLayout.WEST);
pane.add(new rightPanel(),BorderLayout.EAST);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class CFrame extends JFrame{
public CFrame(String title){
setTitle(title);
setBackground(Color.BLUE);
}
}
class leftPanel extends JPanel{
public leftPanel(){
JButton bt1=new JButton("view");
JButton bt2=new JButton("clear");
JButton bt3=new JButton("no idea");
setLayout(new GridLayout(2,2,100,100));
add(bt1);
add(bt2);
add(bt3);
bt1.addActionListener(this);
bt2.addActionListener(this);
bt3.addActionListener(this);
}
}
class rightPanel extends JPanel{
public rightPanel(){
JLabel label=new JLabel(new ImageIcon("image.jpg"));
label.setToolTipText("西瓜帽");
JScrollPane scr=new JScrollPane(label,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
add(label);
add(scr);
}
}
运行结果如图所示
2. 练习使用对话框。包括一个JLabel和两个JButton,按任何一个JButton都会产生一个输入对话框,按确定后将输入内容在JLabel中显示出来
源代码如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class dTest{
public static void main(String args[]){
Form form=new Form();
form.setSize(300,200);
form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
form.setVisible(true);
}
}
class Form extends JFrame implements ActionListener{
private Dial dia;
JLabel lab=new JLabel("请输入");
public Form(){
JButton btn1=new JButton("Yes");
JButton btn2=new JButton("No");
getContentPane().setLayout(new GridLayout(3,1));
add(lab);
add(btn1);
add(btn2);
setTitle("inputprac");
btn1.addActionListener(this);
btn2.addActionListener(this);
}
public void actionPerformed(ActionEvent event){
if(event.getActionCommand()=="输入"){
dia=new Dial(this,"请输入内容",true);
dia.setVisible(true);
lab.setText(dia.getSt());
}
else{
System.exit(0);
}
}
}
class Dial extends JDialog implements ActionListener{
private JTextField text=new JTextField("change");
private JButton btn1=new JButton("确定");
private JPanel panel=new JPanel();
public Dial(JFrame frame,String title,boolean b){
super(frame,title,b);
getContentPane().setLayout(new FlowLayout());
panel.add(text);
panel.add(btn1);
btn1.addActionListener(this);
getContentPane().add(panel);
pack();
}
public void actionPerformed(ActionEvent event){
this.dispose();
}
public String getSt(){
return text.getText();
}
}
运行结果如图所示
3.联系使用JTable。包括姓名、学号、语文成绩、数学成绩、总分共5项
源代码如下:
import java.awt.*;
import javax.swing.*;
public class table{
public static void main(String args[]){
JFrame form=new JFrame("Table试验");
final Object[] row={"姓名","学号","语文成绩","数学成绩","总分"};
Object[][] rowData = {
{"张三", "01", "81", "80", "160"},
{"李四", "02", "93", "72", "165"},
{"王麻子", "03", "99", "97", "196"},
};
JTable tb=new JTable(rowData,row);
JScrollPane pane= new JScrollPane (tb);
form.getContentPane().add(tb);
form.setVisible(true);
form.pack();
}
}
运行结果如图所示
4.编写Application程序,构造一个GUI,实现对两个数的加、减、乘、除功能。应含有3个JTextField和1个JButton
源代码如下:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Form extends JFrame implements ActionListener{
JTextField a=new JTextField(6);
JTextField b=new JTextField(6);
JTextField c=new JTextField("+",1);
JButton btn=new JButton("计算");
JLabel lab=new JLabel("=");
public Form(){
Container ct=getContentPane();
ct.add(a);
ct.add(c);
ct.add(b);
ct.add(lab);
ct.add(btn);
ct.setLayout(new FlowLayout());
btn.addActionListener(this);
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent event){
int m = Integer.parseInt(a.getText());
int n = Integer.parseInt(b.getText());
String f=c.getText().trim();
if(f=="+"){
int r=m+n;
lab.setText("="+r);
}
else if(f=="-"){
int r=m-n;
lab.setText("="+r);
}
else if(f=="*"||f=="×"){
int r=m*n;
lab.setText("="+r);
}
else if(f=="/"||f=="÷"){
int r=m/n;
lab.setText("="+r);
}
}
}
public class counter{
public static void main(String[] args) {
Form form=new Form();
form.setVisible(true);
}
}
实验小结:
在使用GUI图形用户界面设计的过程中,根据所需的控件加以编程即可,好处是无需太多算法,而且以上几个不同的窗体功能实现基本类似,在本次实验中通过编写窗体控件,熟悉了GUI的设计和用法。
第二篇:Java基础实验报告-图形用户界面设计
南京工程学院
实 验 报 告
课程名称 JAVA基础 实验项目名称 图形用户界面设计
实验学生班级 实验学生姓名 学 号 同组学生姓名 实验时间 实验地点
实验成绩评定 指导教师签字 年 月 日
一、实验目的和要求
1.掌握Java Swing组建的使用方法,包括窗口、框架、对话框、面板、文本编辑框、按钮、组合框等多种布局方式,掌握窗口菜单和快捷菜单设计方式。
2.理解委托时间处理模型,掌握不同组件、不同事件的事件处理方法,设计出能够响应事件的Java图形用户界面。
3.熟悉在组件上绘图的方法。
二、实验题目
用表格存储并显示个人所得税税率表,给定一个月收入值,计算应缴的个人所得税。
三、实验方法与步骤(需求分析、算法设计思路、流程图等)
算法设计思路:本次实验题目为计算个人所得税,所以本人从网上找到了国家最新的税收政策,以下为截图:
因此,我设计了以下核心算法
public void actionPerformed(ActionEvent e) {
if(e.getSource()==button_b)
{
double
wage=Double.parseDouble((String)text_wage.getText());
double tax = 0; if(wage<=3500) tax=0; if(wage>3500&&wage<=5000) tax=(wage-3500)*0.03; if(wage>5000&&wage<=8000) tax=(wage-3500)*0.1-105; if(wage>8000&&wage<=12500) tax=(wage-3500)*0.2-555; if(wage>12500&&wage<=38500)
tax=(wage-3500)*0.25-1005; if(wage>38500&&wage<=58500) tax=(wage-3500)*0.3-2755; if(wage>58500&&wage<=83500) tax=(wage-3500)*0.35-5505; if(wage>83500) tax=(wage-3500)*0.45-13505; text.setText(""+tax);
}
}
以上算法是根据税率表设计的,具体为:
我国规定个人收入在3500元起征个人所得税,分了多个阶段: 3500以下:不收税
3500以上到5000以下部分:3%
5000以上到8000以下部分:10%
8000以上到以下部分:20%
125000以上到385000以下部分:25%
385000以上到585000以下部分:30%
585000以上到835000以下部分:35%
83500以上:45%
首先算出每个阶段的速扣数,然后用此公式:
应纳个人所得税税额=(应纳税所得-扣除标准)*适用税率-速算扣除数。 然后就得出以上算法。
四、实验原始纪录(源程序、数据结构等)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class WageJFrame extends JFrame implements ActionListener
{
private JTable table;//表格 private Button button_b;//按钮 private Object datas[][];//数据
String titles[];//标题(为空)
private JTextField text;//个人所得税
private JTextField text_wage;//输入的工资
this.setBounds(dim.width/4,dim.height/4,dim.width/2,dim.height/2);/public WageJFrame() { super("计算个人所得税"); Dimension dim=getToolkit().getScreenSize();//获得屏幕分辨率 /设置窗口大小
this.setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭窗口 this.datas=new Object[8][4];//设置表格长宽 JLabel label=new JLabel("工资");//“工资”标签 text_wage=new JTextField("5000",7);//默认工资 JPanel jpane1=new JPanel();//面板 jpane1.add(label);//把标签加入面板中 jpane1.add(text_wage);//把输入工资的文本框加入面板中 this.getContentPane().add(jpane1,"North");//把上述面板插入主面板中
for(int i=0;i<=7;i++)
{
datas[i][0]=i+1+"";
}
titles=new String[4];//设置标题
titles[0]="级数";
titles[1]="含级数距";
titles[2]="税率";
titles[3]="速扣数";
datas[0][1]="不超过3500元";
datas[1][1]="超过3500,不超过5000元";
datas[2][1]="超过5000,不超过8000元";
datas[3][1]="超过8000,不超过12500元";
datas[4][1]="超过12500,不超过38500元";
datas[5][1]="超过38500,不超过58500元";
datas[6][1]="超过58500,不超过83500元";
datas[7][1]="超过83500";
datas[0][2]="0%";
datas[1][2]="3%";
datas[2][2]="10%";
datas[3][2]="20%";
datas[4][2]="25%";
datas[5][2]="30%";
datas[6][2]="35%";
datas[7][2]="45%";
datas[0][3]="0";
datas[1][3]="0";
datas[2][3]="105";
datas[3][3]="555";
datas[4][3]="1005";
datas[5][3]="2755";
datas[6][3]="5505";
datas[7][3]="13505";
table=new JTable(datas,titles);//创建一个表格 this.getContentPane().add(new JScrollPane(table),"Center");
button_b=new Button("计算个人所得税");
板
} this.setVisible(true);//显示界面 button_b.addActionListener(this);//单击按钮响应事件 JLabel label1=new JLabel("个人所得税");//创建个人所得税标签 text=new JTextField(" ",7);//设置输出框 text.setEditable(false);//输出文本框不可编辑 JPanel jpane2=new JPanel();//创建一个面板 jpane2.add(button_b);//把按钮加到面板中 jpane2.add(label1);//把标签加入面板中(个人所得税) jpane2.add(text);//把输出文本框加入面板 this.getContentPane().add(jpane2,"South");//把面板2加入主面
public void actionPerformed(ActionEvent e)//响应单击事件 {
if(e.getSource()==button_b)
{
double
wage=Double.parseDouble((String)text_wage.getText());
double tax = 0; if(wage<=3500) tax=0; if(wage>3500&&wage<=5000) tax=(wage-3500)*0.03; if(wage>5000&&wage<=8000) tax=(wage-3500)*0.1-105; if(wage>8000&&wage<=12500) tax=(wage-3500)*0.2-555; if(wage>12500&&wage<=38500)
tax=(wage-3500)*0.25-1005; if(wage>38500&&wage<=58500) tax=(wage-3500)*0.3-2755; if(wage>59500&&wage<=83500) tax=(wage-3500)*0.35-5505; if(wage>83500) tax=(wage-3500)*0.45-13505; text.setText(""+tax);
}
}
}
public static void main(String args[]) { } new WageJFrame();//创建一个WageJFrame对象
五、实验结果及分析(计算过程与结果、数据曲线、图表等)
1初始界
面2 工资为3500时的个人所得税
3工资为28850时的个人所得税
4工资为85000时的个人所得税
六、实验总结与思考
通过这次JAVA实验,我清晰地感受到了JAVA语言的魅力,作为现在使用很广的一种编程语言,的确有其补课替代的作用。
从这次实验上看,我对JAVA变成有我资深的只是局限性,毕竟这么厚一本书,在这么点时间内还是很难读透搞懂的,真正等到自己亲自去实验时,却发现问题多多,有的人写代码程序,实现一个功能用了几十行,而有的人却用简短几行就能搞定,开始让我觉得不可思议,但后面慢慢的编程中,我真四体会到了,所以我觉得这方面很重要。
我觉得JAVA对未来走向社会很重要,而这个大作业的编写,正好锻炼了我对JAVA的编程能力。对JAVA有了更深的认识,知识不是瞬间获得的,是靠平时一点一滴的积累和吸收每次的经验得来的。
教师评语: