java实验5图形用户界面设计试验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java实验5图形⽤户界⾯设计试验
常⽤布局
1)、流布局:
FlowLayout 从左到右,⾃上⽽下⽅式在容器中排列,控件的⼤⼩不会随容器⼤⼩变化.
容器.setLayout(new FlowLayout(FlowLayout.LEFT));
2)、⽹格布局:
GridLayout 按照指定⾏数与列数,将容器分成⼤⼩相等的单元格每个单元格放置⼀个控件. 不能将控件放在指定单元格 容器.setLayout(new GridLayout(3,4,10,15));
3)、边界布局:
BorderLayout 将容器分成东、西、南、北、中五个部分
 容器.setLayout(new BorderLayout());
窗⼝的内容⾯板默认布局就是边界布局。

容器.add(控件,BorderLayout.NORTH);
4)、混合布局:
使⽤JPanel,将多个布局组合在⼀起使⽤
5)、绝对布局 null:
以坐标定位
 容器.setLayout(null);
 每个控件在放置在容器之前,必须设置其边界 setBounds(x,y,width,height);
btn.setBounds(10,100,30,60);
常⽤事件
1)、事件源 EventSource:能够触发事件控件如:JButton,JTextField,JFrame,JComboBox,....
2)、事件 Event:ActionEvent,KeyEvent,WindowEvent,TextEvent,...
3)、事件侦听者Listener(接⼝) ActionListener,WindowListener,...
class A implements ActionListener{
public void actionPerformed(ActionEvent e){
....
}
}
A lis=new A();
4)、事件处理函数
public void actionPerformed(ActionEvent e){
....
}
事件流程:事件源触发事件-->事件源侦听者接收事件-->⾃动调⽤相应事件处理函数.
实践编程
1.在应⽤程序窗体中安排1个⽂本框,⼀个标签。

在⽂本框输⼊⼀个数字(0-9),按回车键,在标签处显⽰对应的英⽂单词。

0---zero,1---one,....
窗体类:
package简单数字对应窗体;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Numcompare extends JFrame{
JTextField text;
JLabel label;
Numcompare(){
setTitle("Number change");
//限制输⼊⼀个数字
text=new JTextField(10);
label=new JLabel();
label.setText("请输⼊0-9的数字");
text.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String getstr=text.getText();
String showstr=null;
switch (getstr) {
case "0":
showstr="zero";
break;
case "1":
showstr="one";
break;
case "2":
showstr="two";
break;
case "3":
showstr="three";
break;
case "4":
showstr="four";
break;
case "5":
showstr="five";
break;
case "6":
showstr="six";
break;
case "7":
showstr="seven";
break;
case "8":
showstr="eight";
break;
case "9":
showstr="nine";
break;
default:
showstr=("请输⼊0-9的数字");
break;
}
label.setText(showstr);
text.setText(null);
}
});
setLayout(new FlowLayout());
add(text);
add(label);
setBounds(100,100,460,190);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);;
}
}
实现类(注:以下省略实现类--实例化⾃定义窗体)
package简单数字对应窗体;
public class test {
public static void main(String[] args) {
new Numcompare();
}
}
结果:
2.在应⽤程序窗体中安排两个⽂本框分别⽤来输⼊两个整数,两个按钮分别为 “+”,“*”,⼀个结果标签。

点击按纽“+”将两⽂本框的数据做加法运算;点击按钮“*”做乘法运算,将结果显⽰在标签中。

窗体类:
package简单计算窗体;
import java.awt.event.*;
import java.math.BigInteger;
import java.awt.*;
import javax.swing.*;
public class Caculate extends JFrame{
JTextArea text1,text2;
JButton jb1,jb2;
JLabel label;
Caculate(){
text1=new JTextArea(2,4);
text2=new JTextArea(2,4);
jb1=new JButton("+");
jb2=new JButton("*");
label=new JLabel();
JSplitPane p1;
JPanel p2=new JPanel();
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String n1=text1.getText();
String n2=text2.getText();
try {
BigInteger num1=new BigInteger(n1);
BigInteger num2=new BigInteger(n2);
label.setText((num1.add(num2)).toString());
}catch (Exception ee) {
label.setText("请输⼊整数");
text1.setText(null);
text2.setText(null);
}
}
});
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String n1=text1.getText();
String n2=text2.getText();
try {
BigInteger num1=new BigInteger(n1);
BigInteger num2=new BigInteger(n2);
label.setText((num1.multiply(num2)).toString());
}catch (Exception ee) {
label.setText("请输⼊整数");
text1.setText(null);
text2.setText(null);
}
}
});
setLayout(new GridLayout(3,1));
p1=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,text1,text2);
p1.setDividerLocation(117);
add(p1);
p2.setLayout(new GridLayout(1,2));
p2.add(jb1);
p2.add(jb2);
add(p2);
add(label);
setBounds(100,100,260,190);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
结果:
3.设计合理的布局⽣成下图所⽰的图形界⾯,并编写事件处理程序实现以下功能:按“产⽣”按钮,产⽣两个随机数并分别显⽰在“数字⼀”和“数字⼆”对应的⽂本框内,按“计算”按钮,计算产⽣的这两个随机数之和,并显⽰在“结果”对应的⽂本框内。

窗体类
package随机数和;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigDecimal;
import javax.swing.*;
public class RandomAdd extends JFrame{
JLabel label1=new JLabel("数字⼀");
JLabel label2=new JLabel("数字⼆");
JLabel label3=new JLabel("结果");
JButton jb1=new JButton("产⽣");
JButton jb2=new JButton("计算");
RandomAdd(){
setTitle("随机⽣成数相加计算");
JTextArea ja1=new JTextArea(2,4);
JTextArea ja2=new JTextArea(2,4);
JTextArea ja3=new JTextArea(2,4);
Box basebox,box1,box2;
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ja1.setText(Math.random()*100+"");
ja2.setText(Math.random()*100+"");
ja3.setText(null);
}
});
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
BigDecimal num1 = new BigDecimal(ja1.getText());
BigDecimal num2 = new BigDecimal(ja2.getText());
ja3.setText(num1.add(num2).toString());
}catch (Exception ee) {
ja3.setText("请点击产⽣键");
}
}
});
box1=Box.createVerticalBox();
box1.add(label1);
box1.add(Box.createHorizontalStrut(8));
box1.add(label2);
box1.add(Box.createHorizontalStrut(8));
box1.add(label3);
box1.add(Box.createHorizontalStrut(8));
box2=Box.createVerticalBox();
box2.add(ja1);
box2.add(Box.createHorizontalStrut(8));
box2.add(ja2);
box2.add(Box.createHorizontalStrut(8));
box2.add(ja3);
box2.add(Box.createHorizontalStrut(8));
basebox=Box.createHorizontalBox();
basebox.add(box1);
basebox.add(Box.createHorizontalStrut(80));
basebox.add(box2);
setLayout(new GridLayout(2,1));
JPanel jp=new JPanel();
add(basebox);
jp.add(jb1);
jp.add(jb2);
add(jp);
setBounds(100,100,260,190);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
结果
4、编写程序实现如下界⾯,实现事件如果按下座位i 就在控制台中显⽰“座位i被选中” 例如按下 “座位0“,则输出座位0被选中”。

窗体类
package选座位;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;
public class ChooseChair extends JFrame implements ActionListener{
ChooseChair(){
JButton jb0=new JButton("座位0");
JButton jb1=new JButton("座位1");
JButton jb2=new JButton("座位2");
JButton jb3=new JButton("座位3");
JButton jb4=new JButton("座位4");
JButton jb5=new JButton("座位5");
jb0.addActionListener(this);
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
jb4.addActionListener(this);
jb5.addActionListener(this);
JLabel label=new JLabel("讲台",JLabel.CENTER);
JPanel jp=new JPanel();
jp.setLayout(new GridLayout(2,3));
jp.add(jb0);
jp.add(jb1);
jp.add(jb2);
jp.add(jb3);
jp.add(jb4);
jp.add(jb5);
add(jp,BorderLayout.CENTER);
add(label,BorderLayout.NORTH);
setBounds(100,100,260,190);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); }
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand()+"被选中");
}
}
结果:
5、完成以下窗体制作
窗体类
package图书馆办证;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class LibraryRegister extends JFrame{ LibraryRegister(){
setTitle("图书馆办理");
JLabel label0=new JLabel("图书证注册"); JLabel label1=new JLabel("姓名:");
JLabel label2=new JLabel("性别:");
JLabel label3=new JLabel("⾝份:");
JLabel label4=new JLabel("单位:");
JLabel label5=new JLabel("证件号码:"); JLabel label6=new JLabel("注册⽇期:"); JLabel label7=new JLabel("有效⽇期:"); JTextField ja1=new JTextField();
JTextArea ja2=new JTextArea(1,1);
JTextArea ja3=new JTextArea(1,1);
JTextArea ja4=new JTextArea(1,1);
JComboBox jm1=new JComboBox();
JComboBox jm2=new JComboBox();
JComboBox jm3=new JComboBox();
jm1.addItem("男");
jm1.addItem("⼥");
jm2.addItem("学⽣");
jm2.addItem("⽼师");
jm3.addItem("计算机系");
jm3.addItem("英语系");
jm3.addItem("国交系");
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
JButton jb1=new JButton("添加");
JButton jb2=new JButton("删除");
JButton jb3=new JButton("撤销");
JButton jb4=new JButton("退出");
Box basebox,box1,box2;
//上部
jp1.add(label0);
//中部
box1=Box.createVerticalBox();
box1.add(label1);
box1.add(Box.createVerticalStrut(15)); box1.add(label2);
box1.add(Box.createVerticalStrut(15)); box1.add(label3);
box1.add(Box.createVerticalStrut(15)); box1.add(label4);
box1.add(Box.createVerticalStrut(15)); box1.add(label5);
box1.add(Box.createVerticalStrut(15)); box1.add(label6);
box1.add(Box.createVerticalStrut(15)); box1.add(label7);
box2=Box.createVerticalBox();
box2.add(ja1);
box2.add(Box.createVerticalStrut(8));
box2.add(jm1);
box2.add(Box.createVerticalStrut(8));
box2.add(jm2);
box2.add(Box.createVerticalStrut(8));
box2.add(jm3);
box2.add(Box.createVerticalStrut(8));
box2.add(ja2);
box2.add(Box.createVerticalStrut(8));
box2.add(ja3);
box2.add(Box.createVerticalStrut(8));
box2.add(ja4);
basebox=Box.createHorizontalBox();
basebox.add(box1);
basebox.add(Box.createHorizontalStrut(200));
basebox.add(box2);
//底部按钮懒得实现
jp2.add(jb1);
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
setLayout(new BorderLayout());
add(jp1,BorderLayout.NORTH);
add(basebox);
add(jp2,BorderLayout.SOUTH);
setBounds(100,100,500,325);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); }
}
结果
6、运⽤Swing控件完成下题
package借⽤物品;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class BorrowItem extends JFrame{
BorrowItem(){
setTitle("借⽤物品");
JLabel label1=new JLabel("员⼯编号:");
JLabel label2=new JLabel("借⽤器具:");
JLabel label3=new JLabel("借⽤⽇期:");
JLabel label4=new JLabel("归还⽇期:");
JLabel label5=new JLabel("借⽤原因:");
JTextField text1=new JTextField(9);
JTextField text2=new JTextField(9);
JTextField text3=new JTextField(9);
JTextField text4=new JTextField(9);
JTextField text5=new JTextField(25);
JButton jb1=new JButton("确定");
JButton jb2=new JButton("取消");
Dimension preferredSize = new Dimension(160,30);//设置尺⼨ jb1.setPreferredSize(preferredSize );
jb2.setPreferredSize(preferredSize );
setLayout(new GridLayout(4,1));
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
JPanel jp3=new JPanel();
JPanel jp4=new JPanel();
jp1.add(label1);
jp1.add(text1);
jp1.add(label2);
jp1.add(text2);
jp2.add(label3);
jp2.add(text3);
jp2.add(label4);
jp2.add(text4);
jp3.add(label5);
jp3.add(text5);
jp4.add(jb1);
jp4.add(jb2);
add(jp1);
add(jp2);
add(jp3);
add(jp4);
setBounds(100,100,350,180);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); }
}
结果。

相关文档
最新文档