一、基本目标
设计一个窗体程序,有两个文本框,其中第二个文本框是不可编辑的,有三个按钮,点击Copy按钮能把第一个文本框复制到第二个文本框,点击Clear按钮能把两个文本框的内容清空,也可以用快捷键ALT+R与ALT+Y操作
点击Close按钮,能关闭这个窗体程序
二、基本思想
这个JFrame的布局与各组件名称如下,请联合下面的代码查看:
三、制作过程
请看如下代码:
import java.awt.*; import java.awt.event.*; import javax.swing.*; //由于此窗体有触发事件,因此必须使用ActionListener接口 class textbox implements ActionListener{ //成员变量,一个JFrame,两个JLabel,两个JTextField,三个JButton,三个JPanel JFrame f; JLabel l1,l2; JTextField t1,t2; JButton b1,b2,b3; JPanel p1,p2,p; public static void main(String args[]){ textbox a=new textbox(); a.go(); } public void go(){ //界面标题 f=new JFrame("textbox"); //创建2个固定文本,一个叫source一个叫target l1=new JLabel("Source");l2=new JLabel("Target"); //创建2个文本框 t1=new JTextField();t2=new JTextField(); //t2文本框为不可编辑的 t2.setEnabled(false); //创建3个按钮,里面的参数分别为其文本 b1=new JButton("Clear");b2=new JButton("Copy");b3=new JButton("Close"); //为b1,b2创建快捷键ALT+R与ALT+Y,一般快捷键只会在纯英文按钮中加下划线 b1.setMnemonic(KeyEvent.VK_R);b2.setMnemonic(KeyEvent.VK_Y); //b1,b2,b3触发的事件,分别与下面actionPerformed的Clear事件Copy事件Close事件相对应 b1.setActionCommand("Clear");b2.setActionCommand("Copy");b3.setActionCommand("Close"); b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this); //创建面板 p=new JPanel();p1=new JPanel();p2=new JPanel(); //设置外围最大的那个面板p的布局为BorderLayout(),这个布局可以查查资料,不在这里赘述 p.setLayout(new BorderLayout()); //把各个部件分别摆上p1,p2 p1.add(l1);p1.add(t1);p1.add(l2);p1.add(t2);p2.add(b1);p2.add(b2);p2.add(b3); //把p1摆上p中的BorderLayout的CENTER位置,p2则是SOUTH位置 p.add(p1,BorderLayout.CENTER); p.add(p2,BorderLayout.SOUTH); //p1使用GridLayout2x2布局,p2则使用1x3的,正好摆好各个组件 p1.setLayout(new GridLayout(2,2)); p2.setLayout(new GridLayout(1,3)); f.getContentPane().add(p); //窗口大小为320x100,不允许用户自己调整大小,可见,默认不可见 f.setSize(320,100); f.setVisible(true); f.setResizable(false); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } //按钮触发时间函数指定要这样写 public void actionPerformed(ActionEvent e){ if(e.getActionCommand()=="Clear"){ //如果触发的时间为Clear,那么把t1,t2的文本清空 t1.setText(""); t2.setText(""); } if(e.getActionCommand()=="Copy"){ //如果触发的时间为Copy,那么把t2的文本就是t1的文本 t2.setText(t1.getText()); } if(e.getActionCommand()=="Close"){ //如果触发的时间为Close,就退出这个程序 System.exit(0); } } }
其中,对比于《【Java】JFrame Helloworld》(点击打开链接)一文中的程序,本文已经把画界面这个代码用类封装在text类中的go()方法中,更加具有可移植性
时间: 2024-11-06 15:44:23