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

 

 

经常使用布局

1)、流布局:java

  FlowLayout 从左到右,自上而下方式在容器中排列,控件的大小不会随容器大小变化.编程

       容器.setLayout(new FlowLayout(FlowLayout.LEFT));dom

2)、网格布局:ide

  GridLayout 按照指定行数与列数,将容器分红大小相等的单元格每一个单元格放置一个控件. 不能将控件放在指定单元格函数

     容器.setLayout(new GridLayout(3,4,10,15));布局

3)、边界布局:this

  BorderLayout 将容器分红东、西、南、北、中五个部分spa

     容器.setLayout(new BorderLayout());设计

  窗口的内容面板默认布局就是边界布局。code

  容器.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); } }

结果

 

四、编写程序实现以下界面,实现事件若是按下座位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()+"被选中"); } }

结果:

 

 

 

五、完成如下窗体制做

 窗体类

 

 

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); } }

结果

 

六、运用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); } }

结果

 

相关文章
相关标签/搜索