当前位置:文档之家› java实验 JAVA Swing 图形用户界面和对话框

java实验 JAVA Swing 图形用户界面和对话框

java实验 JAVA Swing 图形用户界面和对话框
java实验 JAVA Swing 图形用户界面和对话框

JAVA实验报告

课程名称 java实验实验名称 JAVA Swing 图形用户界面和对话框

学院__计算机学院__专业班级__软件__

姓名__ ____ 学号_ __实验日期:2015年4月30 日

一.实验目的

(1)学习处理ActionEven事件;

(2)学习使用布局类;

(3)学习焦点、鼠标和键盘事件;

(4)学习使用对话框。

二.实验内容

(-)实验题目一:算术测试,编写一个算术测试小软件,用来训练小学生的算术能力。

1.要点分析:程序有三个类组成,其中Teacher对象充当监视器,负责给出算术题目,并判断回答者的答案是否正确。ComputerFrame对象负责为算术题目提供视图,比如用户可以通过ComputerFrame对象提供的GUI界面给出题目的答案;MainClass是软件的主类。

2.程序源代码:

package算术测试;

public class MainClass {

public static void main(String args[]){

ComputerFrame frame;

frame=new ComputerFrame();

frame.setTitle("算术测试");

frame.setBounds(100,100,650,180);

}

}

package算术测试;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class ComputerFrame extends JFrame {

JMenuBar menubar;

JMenu choiceGrade;

JMenuItem grade1,grade2;

JTextField textOne,textTwo,textResult;

JButton getProblem,giveAnswer;

JLabel operatorLabel,message;

Teacher teacherZhang;

ComputerFrame(){

teacherZhang=new Teacher();

teacherZhang.setMaxInteger(20);

setLayout(new FlowLayout());

menubar=new JMenuBar();

choiceGrade=new JMenu("选择级别");

grade1=new JMenuItem("幼儿级别");

grade2=new JMenuItem("儿童级别");

grade1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

teacherZhang.setMaxInteger(10);

}

});

grade2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

teacherZhang.setMaxInteger(50);

}

});

choiceGrade.add(grade1);

choiceGrade.add(grade2);

menubar.add(choiceGrade);

setJMenuBar(menubar);

textOne=new JTextField(5);//创建文本框,其可见字符长为5

textTwo=new JTextField(5);

textResult=new JTextField(5);

operatorLabel=new JLabel("+");

operatorLabel.setFont(new Font("Arial",Font.BOLD,20));

message=new JLabel("你还没有回答呢");

getProblem=new JButton("获取题目");

giveAnswer=new JButton("确认答案");

add(getProblem);

add(textOne);

add(operatorLabel);

add(textTwo);

add(new JLabel("="));

add(textResult);

add(giveAnswer);

add(message);

textResult.requestFocus();

textOne.setEditable(false);

textTwo.setEditable(false);

getProblem.setActionCommand("getProblem");

textResult.setActionCommand("anwser");

giveAnswer.setActionCommand("answer");

teacherZhang.setJTextField(textOne,textTwo,textResult);

teacherZhang.setJLabel(operatorLabel,message);

getProblem.addActionListener(teacherZhang);

giveAnswer.addActionListener(teacherZhang);

textResult.addActionListener(teacherZhang);

setVisible(true);

validate();

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

}

}

package算术测试;

import java.util.Random;

import java.awt.event.*;

import javax.swing.*;

public class Teacher implements ActionListener{

int numberOne,numberTwo;

String operator="";

boolean isRigth;

Random random;

int maxInteger;

JTextField textOne,textTwo,textResult;

JLabel operatorLabel,message;

Teacher(){

random=new Random();

}

public void setMaxInteger(int n){

maxInteger=n;

}

public void actionPerformed(ActionEvent e){

String str=e.getActionCommand();

if(str.equals("getProblem")){

numberOne=random.nextInt(maxInteger)+1;//1~最大整数之间的随机数

numberTwo=random.nextInt(maxInteger)+1;

double d=Math.random();//获取0~1之间的随机数

if(d>=0.5)

operator="+";

else

operator="-";

textOne.setText(""+numberOne);

textTwo.setText(""+numberTwo);

operatorLabel.setText(operator);

message.setText("请回答");

textResult.setText(null);

}

else if(str.equals("answer")){

String answer=textResult.getText();

try{

int result=Integer.parseInt(answer);

if(operator.equals("+")){

if(result==numberOne+numberTwo)

message.setText("你回答正确");

else

message.setText("你回答错误");

}

else if(operator.equals("-")){

if(result==numberOne-numberTwo)

message.setText("你回答正确");

else

message.setText("你回答错误");

}

}

catch(NumberFormatException ex){

message.setText("请输入数字字符");

}

}

}

public void setJTextField(JTextField... t){ textOne=t[0];

textTwo=t[1];

textResult=t[2];

}

public void setJLabel(https://www.doczj.com/doc/5513563560.html,bel){

operatorLabel=label[0];

message=label[1];

}

}

3.实验结果:

4.实验后练习:

(1)模仿本实验的代码,再增加小学生级别。

(2)给上述程序增加测试乘法的功能。

(二)实验题目二:布局与日历。

1.要点分析:设置一个窗口,该窗口的布局为BorderLayout布局。窗口的中心添加一个JPanel容器pCenter,pCenter的布局是7行7列的GridLayout布局,pCenter中放置49个标签,用来显示日历。窗口的北面添加一个JPanel容器pNorth,其布局是FlowLayout布局,pNorth放置两个按钮:nextMonth和previousMonth,单击nextMonth按钮,可以显示当前月的下一月日历;单击previousMonth按钮,可以显示当前月的上一月的日历。

2.程序源代码:

package布局与日历;

public class CalendarMainClass {

public static void main(String args[]){

CalendarFrame frame=new CalendarFrame();

frame.setBounds(100,100,360,300);

frame.setVisible(true);

frame.setYearAndMonth(2015,5);

}

}

package布局与日历;

import java.util.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.border.*;

public class CalendarFrame extends JFrame implements ActionListener{

/**

*

*/

private static final long serialVersionUID =

-4568452730166791416L;

JLabel labelDay[]=new JLabel[42];

JButton titleName[]=new JButton[7];

String name[]={"日","一","二","三","四","五","六"};

JButton nextMonth,previousMonth;

CalendarBean calendar;

JLabel showMessage=new JLabel("",JLabel.CENTER);

int year=2011,month=2;

public CalendarFrame() {

// TODO自动生成的构造函数存根

JPanel pCenter=new JPanel();

pCenter.setLayout(new GridLayout(7,7));

for(int i=0;i<7;i++){

titleName[i]=new JButton(name[i]);

titleName[i].setBorder(new

SoftBevelBorder(BevelBorder.RAISED));

pCenter.add(titleName[i]);

}

for(int i=0;i<42;i++){

labelDay[i]=new JLabel("",JLabel.CENTER);

labelDay[i].setBorder(new

SoftBevelBorder(BevelBorder.LOWERED));

pCenter.add(labelDay[i]);

}

calendar=new CalendarBean();

nextMonth=new JButton("下月");

previousMonth=new JButton("上月");

nextMonth.addActionListener(this);

previousMonth.addActionListener(this);

JPanel pNorth=new JPanel(),

pSouth=new JPanel();

pNorth.add(previousMonth);

pNorth.add(nextMonth);

pSouth.add(showMessage);

add(pCenter, BorderLayout.CENTER);

add(pNorth,BorderLayout.NORTH);

add(pSouth,BorderLayout.SOUTH);

setYearAndMonth(year,month);

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

}

public void setYearAndMonth(int year2, int month2) { // TODO自动生成的方法存根

calendar.setyear(year2);

calendar.setMonth(month2);

String day[]=calendar.getCalender();

for(int i=0;i<42;i++){

labelDay[i].setText(day[i]);

}

showMessage.setText("日历"+calendar.getYear()+"年"+calendar.getMonth()+"月");

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO自动生成的方法存根

if(e.getSource()==nextMonth){

month=month+1;

if(month>12)

month=1;

calendar.setMonth(month);

String day[]=calendar.getCalender();

for(int i=0;i<42;i++)

labelDay[i].setText(day[i]);

}

else if(e.getSource()==previousMonth){

month=month-1;

if(month<1)

month=12;

calendar.setMonth(month);

String day[]=calendar.getCalender();

for(int i=0;i<42;i++)

labelDay[i].setText(day[i]);

}

showMessage.setText("日历"+calendar.getYear()+"年"+calendar.getMonth()+"月");

}

}

package布局与日历;

import java.util.Calendar;

public class CalendarBean {

String day[];

int year=2005,month=0;

public void setyear(int year) {

// TODO自动生成的方法存根

this.year=year;

}

public int getYear() {

// TODO自动生成的方法存根

return year;

}

public void setMonth(int month) {

// TODO自动生成的方法存根

this.month=month;

}

public int getMonth() {

// TODO自动生成的方法存根

return month;

}

public String[] getCalender() {

// TODO自动生成的方法存根

String a[]=new String[42];

Calendar 日历=Calendar.getInstance();

日历.set(year,month-1,1);

int星期几=日历.get(Calendar.DAY_OF_WEEK)-1;

int day=0;

if(month==1||month==3||month==5||month==7||month==8||month= =10||month==12)

day=31;

if(month==4||month==6||month==9||month==11||month==10) day=30;

if(month==2){

if((year%4==0)&&(year%100!=0)||year%400==0)

day=29;

else

day=28;

}

for(int i=星期几,n=1;i<星期几+day;i++){

a[i]=String.valueOf(n);

n++;

}

return a;

}

}

3.实验结果

4.课后练习:

在CalenderFrame类中增加一个JTextField文本框,用户可以通过在文本框中输入年份来修改calender对象的int成员。

(三)实验题目三:华容道

1.要点分析:编写GUI程序,用户通过键盘和鼠标时间来实现曹操、关羽等人物的移动。

2.程序源代码:

package华容道;

public class MainClass {

public static void main(String args[]){

new Hua_Rong_Dao();

}

}

package华容道;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Person extends JButton implements FocusListener{ int number;

Color c=new Color(255,245,170);

Font font=new Font("宋体",Font.BOLD,12);

Person(int number,String s){

super(s);

setBackground(c);

setFont(font);

this.number=number;

c=getBackground();

addFocusListener(this);

}

public void focusGained(FocusEvent e) {

// TODO Auto-generated method stub

setBackground(Color.red);

}

public void focusLost(FocusEvent e) {

// TODO Auto-generated method stub

setBackground(c);

}

}

package华容道;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class Hua_Rong_Dao extends JFrame implements MouseListener,KeyListener,ActionListener {

Person person[]=new Person[10];

JButton left,rigth,above,below;

JButton restart=new JButton("重新开始");

public Hua_Rong_Dao(){

init();

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

setBounds(100,100,320,500);

setVisible(true);

validate();

}

public void init(){

setLayout(null);

add(restart);

restart.setBounds(100,320,120,35);

restart.addActionListener(this);

String name[]={"曹操","关羽","张","刘","周","黄","兵","兵","兵","兵",};

for(int k=0;k

person[k]=new Person(k,name[k]);

person[k].addMouseListener(this);

person[k].addKeyListener(this);

add(person[k]);

}

person[0].setBounds(104,54,100,100);

person[1].setBounds(104,154,100,50);

person[2].setBounds(54,154,50,100);

person[3].setBounds(204,154,50,100);

person[4].setBounds(54,54,50,100);

person[5].setBounds(204,254,50,100);

person[6].setBounds(54,254,50,50);

person[7].setBounds(204,254,50,50);

person[8].setBounds(104,204,50,50);

person[9].setBounds(154,204,50,50);

person[10].requestFocus();

left=new JButton();

rigth=new JButton();

above=new JButton();

below=new JButton();

add(left);

add(rigth);

add(above);

add(below);

left.setBounds(49,49,5,260);

rigth.setBounds(254,49,5,260);

above.setBounds(49,49,210,5);

below.setBounds(49,304,210,5);

validate();

}

public void keyTyped(KeyEvent e) {}

public void keyReleased(KeyEvent e) {}

public void keyPressed(KeyEvent e) {

Person man=(Person)e.getSource();

if(e.getKeyCode()==KeyEvent.VK_DOWN)

go(man,below);

if(e.getKeyCode()==KeyEvent.VK_UP)

go(man,above);

if(e.getKeyCode()==KeyEvent.VK_LEFT)

go(man,left);

if(e.getKeyCode()==KeyEvent.VK_RIGHT)

go(man,rigth);

}

public void mousePressed(MouseEvent e) { Person man=(Person)e.getSource();

int x=-1,y=-1;

x=e.getX();

y=e.getY();

int w=man.getBounds().width;

int h=man.getBounds().height;

if(y>h/2)

go(man,below);

if(y

go(man,above);

if(x

go(man,left);

if(x>w/2)

go(man,rigth);

}

public void mouseReleased(MouseEvent e) {

}

public void mouseEntered(MouseEvent e) {

}

public void mouseExited(MouseEvent e) {

}

public void mouseClicked(MouseEvent e) {

}

public void go(Person man,JButton direction){ boolean move=true;

Rectangle manRect=man.getBounds();

int x=man.getBounds().x;

int y=man.getBounds().y;

if(direction==below)

y=y+50;

else if(direction==above)

y=y-50;

else if(direction==left)

x=x-50;

else if(direction==rigth)

x=x+50;

manRect.setLocation(x,y);

Rectangle directionRect=direction.getBounds();

for(int k=0;k<10;k++){

Rectangle personRect=person[k].getBounds();

if((manRect.intersects(personRect))&&(man.number!=k)) move=false;

}

if(manRect.intersects(directionRect))

move=false;

if(move==true)

man.setLocation(x,y);

}

public void actionPerformed(ActionEvent e) {

dispose();

new Hua_Rong_Dao();

}

}

3.实验结果

4.课后练习:

一个按钮button调用setIcon(Icon icon)方法可以设置按钮button上的图

标,比如可以用ImageIcon创建一个对象:ImageIcon guangyu=new ImageIcon(“ok.jpg”);然后按钮button调用setIcon(Icon icon)方法:button.setIcon(guanyu)设置按钮button上的图标是图像ok.jpg。

改进程序,使得代表华容道人物的按钮上有一个代表人物形象的图像。(四)实验题目四:计算平方根

1.要点分析:输入对话框含有供用户输入文本的文本框、一个确认和取消按钮,是有模式的对话框。当输入对话框可见时,要求用户输入一个字符串,可以用javax.swing包中的JOptionPane类的静态方法创建一个对话框。

2.程序源代码:

package计算平方根;

import javax.swing.*;

public class InputNumber {

public static void main(String args[]){

double result=0;

boolean inputComputer=false;

while(inputComputer==false){

String str=JOptionPane.showInputDialog(null,"输入一个正数","输入对话框",JOptionPane.PLAIN_MESSAGE);

try{

result=Double.parseDouble(str);

if(result>=0)

inputComputer=true;

}

catch(NumberFormatException exp){

JOptionPane.showMessageDialog(null,"输入了非法字符","

警告对话框",JOptionPane.WARNING_MESSAGE);

inputComputer=false;

}

}

double sqrtRoot=Math.sqrt(result);

System.out.println(result+"平方根:"+sqrtRoot);

}

}

3.实验结果:

4.课后练习:

编写一个应用程序,程序运行时弹出一个对话框,用户使用该对话框输入一个正数,如果用户出现输入错误(例如,输入非数字字符或负数)程序弹出一个消息对话框,警告出现了输入错误。如果输入无错误,程序显示正数的平方根。三.个人小结

此次试验,在编写一段冗长JavaSwing代码中,我学会学习处理ActionEve 事件;在综合运用布局类焦点、鼠标、键盘事件和对话框编写程序的时候,我遇到了许多意想不到的问题,在处理这些的问题我深刻地体会到了作为一名程序员深思熟虑的重要性,同时在平时的学习生活中要多敲代码,这样持续地学习,久而久之熟能生巧,慢慢的许多问题你一看就轻易找到解决办法。

java图形界面之电子算盘

Java图形用户界面 院系: 计算机系姓名:后人好乘凉 一实验目的 ●使学生综合运用图形用户界面设计的概念; ●使学生熟悉使用中间面板,组成层次复杂的GUI界面; ●使学生掌握使用事件驱动编程; 二实验环境及实验准备 ●所需硬件环境为微机; ●所需软件环境为JDK、Eclipse; ●掌握Java下界面容器与基本组件的基本知识与应用; ●掌握Java下事件处理模型; ●掌握Java下图形绘制的方法; 三实验内容 (一)、设计实现电子算盘,并完成测试; [题目描述及要求] 给小朋友设计一个电子算盘。要求绘制电子算盘界面,设计并实现打珠算过程(界面参考如下图示)。 电子算盘参考界面示意 程序源代码: package calculator;

import java、awt、Color; //导入 import java、awt、GridLayout; import java、awt、Container; import javax、swing、JLabel; import javax、swing、JButton; import javax、swing、ImageIcon; import javax、swing、JPanel; import javax、swing、JFrame; import javax、swing、JTextField; import java、awt、event、*; public class Calculator extends JFrame{ public int totalNumber; public int t = 0; public boolean[] isAddFive = new boolean[5]; public int number[] = new int[5]; public ImageIcon picture = new ImageIcon(System、getProperty("user、 dir") + "/算珠、jpg" ); //添加图片 public ImageIcon picture1= new ImageIcon(System、getProperty("user、 dir") + "/算珠1、jpg" ); Container con = getContentPane(); JPanel j1 = new JPanel(); JPanel j2 = new JPanel(); JPanel j3 = new JPanel(); JPanel time=new JPanel(); JLabel q = new JLabel(); JLabel nA = new JLabel(); JLabel Time=new JLabel(new ImageIcon("、/时钟、jpg")); //添加时钟标签的图片 JTextField a = new JTextField(); JButton Buttons_1[][] = new JButton[2][5]; JButton Buttons_2[][] = new JButton[5][5]; GridLayout gl_1 = new GridLayout(2,5); GridLayout gl_2 = new GridLayout(5,5); GridLayout gl_3 =new GridLayout(); public Calculator() { super("电子算盘"); setDefaultCloseOperation(JFrame、EXIT_ON_CLOSE); setBounds(100,100,600,400); setVisible(true); setLayout(null); AbacusPanel(); } public void AbacusPanel() // 算盘面板

java图形用户界面设计

实验名称:图形用户界面设计 一、实验目的 1.掌握常用图形界面组件(按钮、文本框等)对象的创建及其常用方法的使用。如,按钮的常用方法是getLabel(),文本框的常用方法有setText(),getText()等。 2.掌握常用的布局管理类CardLayou,BorderLayout,FlowLayout,GridLayout的使用策略。能够将它们联合起来使用。 3.掌握java语言的事件处理。每个事件对应的接口(或适配器类)是什么,每个接口有哪些方法,如何进行委托处理,被委托者必须做什么。 二、实验环境(软件、硬件环境) PC机 JDK包 三、实验原理 通过图形用户界面(GUI),用户和程序之间可以方便地进行交互。javax.swing包中的组件类可以帮助我们完整界面的设计。javax.swing包的JComponent类是java.awt包中的Container类的一个直接子类、Component类的间接子类。javax.swing包中的JFrame类和JDialog类分别是java.awt包中Frame类和Dialog类的直接子类、Window类的间接子类。在学习GUI编程时,必须很好地理解并掌握两个概念:容器类和组件类,必须很好地掌握java的事件处理机制。 四、实验容及步骤 实验容:密码验证问题。 编写一个Java程序,实现用户根据自己的密码进入界面,如果用户输入信息正确,则输出“欢迎XXX用户”,否则用户还可以尝试两次,如果尝试阶段输入信息错误,则输出“请输入正确的信息”,如果尝试失败,用户则退出。 调试并编译程序PasswordVerification.java,运行该程序,运行结果如图8-1、图8-2、

java实验报告实验六Java图形用户界面

信息工程学院 Java程序设计实习报告 JAVA图形用户界面 实验六Java图形用户界面 1.实验目的 (1)掌握图形用户界面基本组件。 (2)了解如何使用布局管理器对组件进行管理。 (3)掌握Java事件处理机制。 2.实验内容 实验题 1 编写一个模拟计算器的程序,使用面板与网格布局,添加一个文本框,10个数字按钮(0-9),4个加减乘除按钮,一个等号按钮,一个清除按钮,要求将计算公式与结果显示在文本框中。 运行结果: 实验报告的内容与格式按任课教师的要求书写。

加法: 主要代码: private void initComponents() { jButton1 = new javax、swing、JButton(); jButton2 = new javax、swing、JButton(); jButton3 = new javax、swing、JButton(); jButton4 = new javax、swing、JButton(); jButton5 = new javax、swing、JButton(); jButton6 = new javax、swing、JButton(); jButton7 = new javax、swing、JButton(); jButton8 = new javax、swing、JButton(); jButton9 = new javax、swing、JButton(); jButton10 = new javax、swing、JButton(); jButton11 = new javax、swing、JButton(); jButton12 = new javax、swing、JButton(); jButton13 = new javax、swing、JButton(); jButton14 = new javax、swing、JButton(); jButton15 = new javax、swing、JButton(); jTextField1 = new javax、swing、JTextField(); setStub(null); jButton1、setText("3"); jButton1、addActionListener(new java、awt、event、

JAVA实验-图形界面设计

广州大学学生实验报告 开课学院及实验室:计算机科学与工程实验室2014年11月14日 一、实验目的 实验十图形用户界面(1) 1.了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法, 2.了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。 实验十一图形用户界面(2) 1.了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法, 2.了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。 二、实验器材 MacBook Pro一台 操作系统:OS X Yosemite

编程软件:eclipse 三、实验要求 实验十图形用户界面(1) 1. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 2. 掌握编写独立运行的窗口界面的方法。 3. 了解Java Swing 组件的使用方法。 4. 了解对话框的使用方法。 实验十一图形用户界面(2) 1. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 2. 掌握编写独立运行的窗口界面的方法。 3. 了解Java Swing 组件的使用方法。 4. 了解对话框的使用方法。 四、实验过程原始数据记录 实验十图形用户界面(1) 1. 如下图所示,用了三个文本框,第一个文本框给用户输入商品单价,第二个则是给 用户输入商品数量,第三个用于显示总金额。 代码: import class test_2_1_1 extends JFrame implements

ActionListener{ public static void main(String[] args) { ddDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { ddDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e){ quals("计算")){ if (!canCal){ showMessage("输入的数据不合法"); return; } double sum = ()) * ());

java图形化界面练习及答案

作业标题:第四次练习题(总分:得分:分)一、单选题(共有题目15题,共计分) 1. 下列属于容器的组件有 A. ) JButton B. JPane C. Canvas D. JTextArea 学生的答案: B 标准答案: B 该题分数: 学生得分: 分 2. 】 下列方法中,不属于WindowListener接口的是A. windowOpened()

B. windowClosed() C. windowActivated() D. > windowAdapter 学生的答案: D 标准答案: D 该题分数: 学生得分: 分 3. 下列不属于Swing中组件的是( )。 A. JPanel B. JTable C. 《 Menu D. JFrame

学生的答案: C 标准答案: C 该题分数: 学生得分: 分 4. 以下Swing组件中哪一个不是顶层容器组件( )。 A. 框架 B. - 对话框 C. 面板 D. 小程序 学生的答案: C 标准答案: A 该题分数: 学生得分: 0分 5. 对于Swing基本控件单选框,若要使两个单选框对象之间具有相互排斥的关系,需要( )。 A. 》

创建两个单选框对象时定义相同的对象名 B. 将两个单选框对象放在同一个面板上 C. 定义一个ButtonGroup对象group,将两个单选框对象加到group中D. 让两个单选框排成一行或一列 学生的答案: C 标准答案: C 该题分数: 学生得分: 分 6. . 容器被重新设置大小后,( )布局管理器的容器中的组件大小不随容器大小的变化而改变。 A. CardLayout B. FlowLayout C. BorderLayout ?

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)

java简单图形用户界面代码

package dsr; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import https://www.doczj.com/doc/5513563560.html,.Socket; public class Login extends JFrame implements ActionListener{ //定义组件 JPanel northPanel,southPanel,centerPanel,centerPanel1,centerPanel11,centerPanel12; JButton loginBtn,registerBtn,cancalBtn; JLabel userLbl,passwordLbl,titleLbl; JTextField userTxt; JPasswordField passwordPwd; static String name; public Login () { super("用户登录"); northPanel=new JPanel(); southPanel=new JPanel(); centerPanel1=new JPanel(); centerPanel11=new JPanel(); centerPanel12=new JPanel(); //标题 titleLbl=new JLabel("欢迎进入考试系统"); titleLbl.setFont(new Font("隶书",Font.BOLD,24)); northPanel.add(titleLbl); this.add(northPanel,BorderLayout.NORTH); //中间部分 centerPanel1.setLayout(new BorderLayout()); userLbl=new JLabel("用户名"); userTxt=new JTextField(12); centerPanel11.add(userLbl); centerPanel11.add(userTxt); centerPanel1.add(centerPanel11,BorderLayout.NORTH); passwordLbl=new JLabel("密码"); passwordPwd=new JPasswordField(12); centerPanel12.add(passwordLbl); centerPanel12.add(passwordPwd);

8.1 Swing图形用户界面程序设计

第8章Swing图形用户界面程序设计 8.0:GUI概述 Java语言提供两种图形用户界面,即AWT(早期版本)和Swing(增强了功能、减少了平台相关性)。 一方面:Swing图形用户界面比AWT图形用户界面可以克服更多的操作系统不同所带来的图形界面或交互方式上的差别; 另一方面:Swing图形用户界面还增加了功能,可以定制指定的操作系统风格的图形用户界面。 8.1:组件和容器 组件和容器是Swing图形用户界面的组成部分。在Swing图形用户界面程序设计中,要求按照一定的布局方式将组件和容器的组合添加到给定的容器中。这样,通过组件和容器的组合就形成图形用户界面。然后通过事件处理的方式实现在图形界面上的人机交互。 8.1.1 整体介绍 容器本身也是组件。 按组件和容器的用途来分:顶层容器、一般容器、专用容器、基本控件、不可编辑信息组件和可编辑组件。 1:顶层容器主要有三种:小应用程序(Applet和JApplet)、对话框(Dialog 和JDialog)和框架(Frame和JFrame)。 这三种容器在AWT图形用户界面中对应的类分别是java.applet.Applet、java.awt.Dialog和java.awt.Frame;在Swing图形用户界面中对应的类分别是javax.swing.JApplet、javax.swing.JDialog和javax.swing.JFrame,这些名称均以“J”开头。 小应用程序主要用来设计嵌入在网页中运行的程序;对话框通常用来设计具有依赖关系的窗口;框架主要用来设计应用程序的图形界面。 2:一般容器包括面板(Jpanel)、滚动窗格(JScrollPane)、分裂窗格(JSplitPane)、选项卡窗格(JTabbedPane)和工具条(JtoolBar)。 面板通常是只有背景色的普通容器;滚动窗格具有滚动条;分裂窗格是用来装两个组件的容器;选项卡窗格允许多个组件共享相同的界面空间;工具条通常将多个组件(通常是带图标的按钮组件)排成一列或一排。 3:专用容器包括内部框架(JInternalFrame)、分层窗格(JLayeredPane)和根窗格(JRootPane)。 内部框架可以在一个窗口内显示若干个类似于框架的窗口;分层窗格给窗格增加了深度的概念,当两个或多个窗格重叠在一起时,可以根据窗格的深度来决定显示哪一个窗格的内容,一般显示深度值较大的窗格。根窗格一般是自动创建的容器,创建内部框架或者任意一种顶层容器都会自动创建根窗格。 根窗格由玻璃窗格、分层窗格、内容窗格和菜单窗格构成。玻璃窗格是不可见的,只是用来解释各种输入事件;分层窗格为内容窗格和菜单窗格服务,主要

Java图形用户界面实验报告

西安邮电大学 (计算机学院) 课内实验报告 实验名称:图形用户界面 专业名称:计算机科学与技术 班级:计科1405班 学生姓名:高宏伟 学号:04141152 指导教师:刘霞林 实验日期:2016.11.24

一、实验目的 了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。 二、实验要求 1. 掌握使用布局管理器对组件进行管理的方法。 2. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 3. 掌握编写独立运行的窗口界面的方法。 4. 掌握组件的使用方法。 5. 了解对话框的使用方法。 三、实验内容 (一)算术测试。 ?实验要求: 编写一个算术测试小软件,用来训练小学生的算术能力。程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确; ComputerFrame类对象负责为算术题目提供视图,比如用户可以通过ComputerFrame 类对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案;MainClass是 软件的主类。 ?程序模板: Teacher.java public class Teacher { int numberOne,numberTwo; String operator=""; boolean right; public int giveNumberOne(int n) { numberOne=(int)(Math.random()*n)+1; return numberOne; } public int giveNumberT wo(int n) { numberTwo=(int)(Math.random()*n)+1; return numberTwo; } public String giveOperator() { double d=Math.random();

java实验 JAVA Swing 图形用户界面和对话框

JAVA实验报告 课程名称 java实验实验名称 JAVA Swing 图形用户界面和对话框 学院__计算机学院__专业班级__软件__ 姓名__ ____ 学号_ __实验日期:2015年4月30 日 一.实验目的 (1)学习处理ActionEven事件; (2)学习使用布局类; (3)学习焦点、鼠标和键盘事件; (4)学习使用对话框。 二.实验内容 (-)实验题目一:算术测试,编写一个算术测试小软件,用来训练小学生的算术能力。 1.要点分析:程序有三个类组成,其中Teacher对象充当监视器,负责给出算术题目,并判断回答者的答案是否正确。ComputerFrame对象负责为算术题目提供视图,比如用户可以通过ComputerFrame对象提供的GUI界面给出题目的答案;MainClass是软件的主类。 2.程序源代码: package算术测试; public class MainClass { public static void main(String args[]){ ComputerFrame frame; frame=new ComputerFrame(); frame.setTitle("算术测试"); frame.setBounds(100,100,650,180); } } package算术测试; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ComputerFrame extends JFrame {

JMenuBar menubar; JMenu choiceGrade; JMenuItem grade1,grade2; JTextField textOne,textTwo,textResult; JButton getProblem,giveAnswer; JLabel operatorLabel,message; Teacher teacherZhang; ComputerFrame(){ teacherZhang=new Teacher(); teacherZhang.setMaxInteger(20); setLayout(new FlowLayout()); menubar=new JMenuBar(); choiceGrade=new JMenu("选择级别"); grade1=new JMenuItem("幼儿级别"); grade2=new JMenuItem("儿童级别"); grade1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ teacherZhang.setMaxInteger(10); } }); grade2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ teacherZhang.setMaxInteger(50); } }); choiceGrade.add(grade1); choiceGrade.add(grade2); menubar.add(choiceGrade); setJMenuBar(menubar); textOne=new JTextField(5);//创建文本框,其可见字符长为5 textTwo=new JTextField(5); textResult=new JTextField(5); operatorLabel=new JLabel("+"); operatorLabel.setFont(new Font("Arial",Font.BOLD,20)); message=new JLabel("你还没有回答呢"); getProblem=new JButton("获取题目"); giveAnswer=new JButton("确认答案"); add(getProblem); add(textOne); add(operatorLabel); add(textTwo); add(new JLabel("=")); add(textResult);

实验七 基于SWING的图形用户界面GUI设计

实验七基于SWING的图形用户界面GUI设计 一、实验目的 1. 掌握如何使用布局管理器对组件进行管理。 2. 掌握图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法 3. 熟悉Java 的事件处理机制,掌握焦点事件、鼠标事件和键盘事件的处理。 二、实验内容 1.设计一个Windows风格的日历表,通过表格组件和下拉列表组件进行日历的显示。 2.编写华容道智力游戏。通过焦点事件控制人物的颜色,通过键盘事件和鼠标事件来实现人物的移动。 三、实验方案 1. 日历表 要求程序中有一个下拉列表,该列表添加了代表年份的选项,当用户在列表中选择某项后,程序通过表格显示某年各个月份的日历。具体实验步骤由学生自行设计完成。 2. 华容道智力游戏 华容道是我们很熟悉的一个传统智力游戏。要求首先编写一个按钮的子类,该子类创建的对象代表华容道中的人物。通过焦点事件控制人物的颜色,当人物获得焦点时颜色为蓝色,当失去焦点时颜色为灰色。我们通过键盘事件和鼠标事件来实现曹操、关羽等人物的移动,当人物上发生鼠标事件或键盘事件时,如果鼠标指针的位置是在人物的下方(也就是组件的下半部分)或按键盘上的“↓”键,该人物向下移动。向左、向右和向上的移动原理类似。具体实验步骤由学生自行设计完成。 四、实验提示 1.使用Jtable可以创建一个表格对象。可以使用Jtable的构造方法Jtable(Object data[][],Object columnName[])创建表格,表格的视图将以行和

列的形式显示数组data每个单元中对象的字符串。也就是说,表格视图中对应着data单元中对象的字符串表示。参数columnName用来指定表格的列名。用户在表格单元中输入的数据都被认为是一个Object对象,用户通过表格视图对表格单元中的数据进行编辑,以修改二维数组data中对应的数据。在表格视图中输入或修改数据后,需按Enter键或用鼠标单击表格的单元格确定所输入或修改的结果。当表格需要刷新显示时,让表格调用repaint()方法。 2.使用JcomboBox无参数构造方法可以创建一个不含有任何选项的下拉列表,该列表可以调用addItem(String item)添加选项。注意:当下拉列表还没有包含任何选项时,不要给其注册ItemEvent时间监视器,否则程序运行时会抛出异常。 3.在处理鼠标事件时,程序经常关心鼠标在当前组件坐标系中的位置。鼠标事件调用getX()方法返回触发当前鼠标事件时鼠标指针在事件源坐标系中的x坐标;鼠标事件调用getY()方法返回触发当前鼠标事件时鼠标指针在事件源坐标系中的y坐标; 4.组件可以触发焦点事件。组件可以使用addFocustListener(FocusListener listener)方法增加焦点事件监视器。当组件具有焦点监视器后,如果组件从无输入焦点变成有输入焦点或从有输入焦点变成无输入焦点都会触发FocusEvent事件。创建监视器的类必须实现FocusListener接口,该接口有两个方法:public void focusGained(FocusEvent e) public void focusLost(FocusEvent e) 当组件从无输入焦点变成有输入焦点触发FocusEvent事件时,监视器调用类实现的接口方法focusGained(FocusEvent e);当组件从有输入焦点变成无输入焦点触发FocusEvent事件时,监视器调用类实现的接口方法focusLost(FocusEvent e) 5.当一个组件处于激活状态时,组件可以成为触发KeyEvent事件的事件源。当某个组件处于激活状态时,用户敲击键盘上一个键就导致这个组件触发KeyEvent事件。 五、实验结果 编写源程序并上机调试通过,根据实验过程填写实验报告,并上交源程序代码。

实验九Java图形用户界面设计1

实验九Java图形用户界面设计(1) 一实验目的 (1)掌握Frame与面板的使用 (2)布局管理器的使用 (3)布局管理器的使用 (4)边界风格的使用 (5)掌握简单Java事件的处理 二实验内容 1、创建并显示一个标题为“My Frame”,背景色为白色,大小为1000×1000的框架。在该框架中放置八个按钮,按钮的标题分别为“按钮1”、……“按钮8”。采用FlowLayout布局管理器。 程序: import java.awt.*; import javax.swing.*; public class Con1{ private JFrame f; private JButton b1,b2,b3,b4,b5,b6,b7,b8; public static void main(String args[]){ Con1 c=new Con1(); c.go(); } public void go(){

f=new JFrame("My Frame"); Container con=f.getContentPane(); con.setLayout(new FlowLayout()); con.setBackground(Color.white); con.setLayout(new FlowLayout(FlowLayout.RIGHT,920,50)); b1=new JButton("按键1"); b2=new JButton("按键2"); b3=new JButton("按键3"); b4=new JButton("按键4"); b5=new JButton("按键5"); b6=new JButton("按键6"); b7=new JButton("按键7"); b8=new JButton("按键8"); con.add(b1); c on.add(b2); c on.add(b3); c on.add(b4); con.add(b5); c on.add(b6); c on.add(b7); c on.add(b8); f.setSize(1000,1000); f.setVisible(true); } } 结果:

实验三图形用户界面设计(汽院含答案解析)

实验三图形用户界面设计 实验目的 1.掌握Java语言中GUI编程的基本方法 2.掌握Java语言中AWT组件的基本用法 3.掌握Java语言中Swing组件的基本用法 实验导读 1.通过图形用户界面(GUI:Graphics User Interface),用户和程序之间可以方便地 进行交互。 AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。 Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。 JDK写程序所有功能都是靠虚拟机去操作本地操作系统。比如window下,就是JDK 用windows API实现功能。而awt包中很多组件是组件自身去调用本地操作系统代码swing包中的组件采用的是调用本地虚拟机方法,由虚拟机再调用本地操作系统代码。意思就是中间多了一层,这样就加强了swing包的移植性,与本地关系不那强了。 图3.1 AWT常用组件继承关系图 Container为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。 2.布局,容器中的组件的排放方式。常见的布局管理器:

FlowLayout(流式布局管理器):从左到右的顺序排列。Panel默认的布局管理器。 BorderLayout(边界布局管理器):东,南,西,北,中。Frame默认的布局管理器。 GridLayout(网格布局管理器):规则的矩阵 CardLayout(卡片布局管理器):选项卡 GridBagLayout(网格包布局管理器):非规则的矩阵 3.类JFrame是java.awt.Frame 的扩展版本,该版本添加了对JFC/Swing 组件架 构的支持,常用方法如下: 1)JFrame() 该构造方法可以创建一个无标题的窗口,窗口的默认布局为 BorderLayout布局。 2)JFrame(String s) 该构造方法可以创建一个标题为s的窗口,窗口的默认布 局为BorderLayout布局。 3)public void setBounds(int a,int b,int width,int height) 窗口调用该方法 可以设置出现在屏幕上时的初始位置是(a,b),即距屏幕左面a个像素、距屏 幕上方b个像素;窗口的宽是width,高是height。 4)public void setSize(int width,int height) 设置窗口的大小,窗口在屏幕出 现是默认位置是(0,0)。 5)public void setVisible(boolean b) 设置窗口是可见还是不可见,窗口默认 是不可见的。 6)public void setResizable(boolean b) 设置窗口是否可调整大小,窗口默认 是可调整大小的。 7)public void setDefaultCloseOperation(int operation) 设置用户在此窗体 上发起"close" 时默认执行的操作。 8)public void setLocationRelativeTo(Component c) 设置窗口相对于指定组 件的位置。如果组件当前未显示,或者c 为null,则此窗口将置于屏幕的 中央。 实验内容 1.图形用户界面设计程序(ArtFont.java) 要求:设计一个文字字体设置窗体,在该窗体中可以设置要显示文字的字体内容,包括字体名称、字体大小、粗体和斜体等字体风格。并模拟在不同操作系统下的显示效果。程序的最终显示效果如下: 提示:整个窗体继承于JFrame,采用BorderLayout布局。在窗体中添加三个JPanel:northPanel、centerPanel和southPanel,分别位于窗体的北部、中部和南部,然后分别在各个面板中添加其它组件,并逐步完善程序功能。

java图形界面实验报告

河南工业大学实验报告 专业班级:计科F1401 学号:姓名: 实验单元八 【实验目的】 1、掌握???????程序设计方法 2、掌握???????程序设计方法 3、掌握???????程序设计方法 4、掌握???????程序设计方法 5、掌握使用????程序设计方法。 【实验环境】 安装了jdk软件的PC机。 【实验内容】 第18章、图形界面。 【程序功能内容说明】 设置标签的显示字体、大小背景及颜色。 【实验程序原码】 import java.awt.Dimension ; import java.awt.Color ; import java.awt.Font ; import java.awt.Point ; import javax.swing.JLabel ; import javax.swing.JFrame ; public class JLabelDemo02{ public static void main(String args[]){ JFrame frame = new JFrame("Welcome To MLDN") ; JLabel lab = new JLabel("MLDN",JLabel.CENTER) ; // 实例化标签对象

Font fnt = new Font("Serief",Font.ITALIC + Font.BOLD,28) ; lab.setFont(fnt) ; frame.add(lab) ; // 将组件件入到面板之中 Dimension dim = new Dimension() ; frame.setBackground(Color.WHITE) ;//设置窗体的背景颜色 dim.setSize(200,70) ; frame.setSize(dim) ; Point point = new Point(300,200) ; // 设置坐标 frame.setLocation(point) ; frame.setVisible(true) ; } }; 【实验结果】 【该程序关键技术说明】 JFrame作为基本容器用于创建窗口。 JLabel作为标签组件用于在窗口上的显示。

简述Java图形用户界面设计(Swing)

简述Java图形用户界面设计(Swing) Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。 作为一个Java 程序员,从论坛上感受到使用Java 开发程序的人越来多,心中不免欣慰。但是,同样是从论坛中,看到多数人提到Java 就以为是网络开发——不是这样的,Java 也可以开发应用程序,而且可以开发出漂亮的图形用户界面的应用程序,也就是Windows/XWindow 应用程序。因此,我写下这篇文章,希望能带你进入Java 图形用户界面设计之门。 下面,让我们开始…… 说明:所有代码均在Windows XP + Eclipse 环境下编写和测试,示例图片均在Windows XP 下捕捉。 目录 一. AWT 和Swing 二. 框架、监听器和事件 三. 按钮、切换按钮、复选按钮和单选按钮 四. 文本输入框、密码输入框 五. 窗格、滚动窗格和布局管理 六. 后记——什么是SWT (2006年补充) 一. AWT 和Swing AWT 和Swing 是Java 设计GUI 用户界面的基础。与AWT 的重量级组件不同,Swing 中大部

分是轻量级组件。正是这个原因,Swing 几乎无所不能,不但有各式各样先进的组件,而且更为美观易用。所以一开始使用AWT 的程序员很快就转向使用Swing 了。 那为什么AWT 组件没有消亡呢?因为Swing 是架构在AWT 之上的,没有AWT 就没有Swing。所以程序员可以根据自己的习惯选择使用AWT 或者是Swing。但是,最好不要二者混用——除开显示风格不同不说,还很可能造成层次(Z-Order) 错乱,比如下例: 1/* 2 * AwtSwing.java 3 * @author Fancy 4 */ 5 6import java.awt.BorderLayout; 7import java.awt.Button; 8 9import javax.swing.JButton; 10import javax.swing.JDesktopPane; 11import javax.swing.JFrame; 12import javax.swing.JInternalFrame; 13import javax.swing.JPanel; 14 15public final class AwtSwing { 16 17public static void main(String[] args) { 18 AwtSwing as = new AwtSwing(); 19 as.show(); 20 } 21 22 JFrame frame = new JFrame("Test AWT and SWING"); 23 24 JDesktopPane jdp = new JDesktopPane(); 25 26 JInternalFrame jif1 = new JInternalFrame("controls"); 27 28 JInternalFrame jif2 = new JInternalFrame("cover"); 29 30public AwtSwing() { 31 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 32 frame.getContentPane().add(jdp); 33 34 jif1.setContentPane(new JPanel()); 35 jif2.setContentPane(new JPanel());

JAVA实验报告 简单绘图程序

实验三绘制图形 一、实验目的 学会JButton的使用,能进行JButton的基本操作,能使用JButton构造一个图形界面框架通过实验熟悉swing图形用户界面程序设计熟悉java中的事件处理模型,每个事件动作代表的意义进一步提高编程能力,学会独立思考,学会上网查找资料决问题。 二、实验内容 设计一个程序,该程序能够绘制基本的图形(包括圆形、矩形、直线等);要求有一个简单易操作的用户界面(包括菜单、按钮等组件)。编写的程序要求能够实现保存和读取的功能。 三、实验代码 Main.java import ; import ; import ; import import import import winpaint.WinToolBar; import winpaint.windowsPaint; public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub JPanel paintWin = new windowsPaint("画图"); paintWin.setBounds(0, 30, 1000, 1000); paintWin.setLayout(null); paintWin.setVisible(true); JToolBar tool = new WinToolBar((windowsPaint)paintWin); tool.setBounds(0, 0, 1000, 30); tool.setVisible(true); JFrame frame = new JFrame();

相关主题
文本预览
相关文档 最新文档