目录
一、目的与任务
二、内容、要求与安排方式
三、实验设备
四、实验步骤
一、目的与任务
掌握常用事件及其处理模型;掌握常用GUI控制组件的使用及其事件的处理;掌握菜单的使用以及对话框的使用。
二、内容、要求与安排方式
1、实验内容与要求:
(1)编程包含一个标签和一个按钮,单击按钮时,标签的内容在"你好"和"再见"之间切换。
(2)编程包含一个文本框和一个文本区域,文本框内容改变时,将文本框中的内容显示在文本区域中;在文本框中按回车键时,清空文本区域的内容。
(3) 在窗体中添加标签、按钮并使用网格布局管理器排列组件在容器中的位置。
(4)
(5)在窗口中添加组件,运行效果图如下图所示。
2、要求:能够上机编辑、调试java程序;
3、实验安排方式:每组1人,独立完成上机实验;
三、实验设备
1、所用设备:装有java开发环境的计算机
2、消耗性器材:无
四、实验步骤
(1)
package 实验五;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Hello51 extends JFrame{
// private JTextField t1;
JLabel jl = new JLabel();
public Hello51() {
this.setTitle("切换");
Container container = this.getContentPane();
container.setLayout(new BorderLayout());
JPanel panel = new JPanel();
JPanel panelTop = new JPanel();
JPanel panel1 = new JPanel();
// panel.setBackground(Color.BLUE);
// t1 = new JTextField(10);
this.setLocationRelativeTo(null);
// panelTop.add(t1);
panel1.add(jl);
JButton bt = new JButton("切换");
bt.addActionListener(new action());
panel.add(bt);
container.add(panelTop, BorderLayout.CENTER);
container.add(panel1, BorderLayout.NORTH);
container.add(panel, BorderLayout.SOUTH);//SOUTH按钮位置
this.setVisible(true);
this.setSize(300,300);
}
int flag=0;
class action implements ActionListener{
public void actionPerformed(ActionEvent e) {
if(flag==0) {
// t1.setText(String.valueOf("再见"));
jl.setText("再见");
flag = 1;
}
else if(flag==1) {
// t1.setText(String.valueOf("你好"));
jl.setText("你好");
flag = 0;
}
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
new Hello51();
}
}
(2)
package 实验五;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;
import javax.swing.*;
public class Wen52 extends JFrame implements TextListener, ActionListener,KeyListener{
private static TextField t1;
private TextArea jr;
public Wen52(){
JFrame jf = new JFrame();
jf.setSize(400, 200);
jf.setAlwaysOnTop(true);
jf.setTitle("文本");
JPanel jp = new JPanel();
JLabel w1= new JLabel("文本框");
t1 = new TextField(10);
jp.add(w1);
jp.add(t1);
jr = new TextArea(6,30);
jr.setEditable(false);
jp.add(jr);
jf.add(jp,BorderLayout.NORTH);
jf.setLocationRelativeTo(null);
jf.setVisible(true);
jf.setDefaultCloseOperation(EXIT_ON_CLOSE);
t1.addKeyListener(this);
// t1.addActionListener(this);
t1.addTextListener(this);
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
new Wen52();
}
public void textValueChanged(TextEvent e) {
// TODO 自动生成的方法存根
jr.setText(t1.getText());
}
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
if(e.hashCode()==23675675) {
jr.setText("");
}
}
public void keyTyped(KeyEvent e) {
// TODO 自动生成的方法存根
}
public void keyPressed(KeyEvent e) {
// TODO 自动生成的方法存根
if(e.getKeyCode()==KeyEvent.VK_ENTER) {
jr.setText("");
}
}
public void keyReleased(KeyEvent e) {
// TODO 自动生成的方法存根
}
}
(3)
package 实验五;
import javax.swing.*;
import java.awt.*;
public class Biao53 extends JFrame{
public Biao53() {
this.setTitle("网格布局管理器");
Container container = getContentPane();
this.setLayout(new GridLayout(5,5,5,5));
for(int i=0;i<12;i++) {
container.add(new JLabel("标签" + i));
container.add(new JButton("按钮" + i));
// this.add(new JLabel("标签" + i));
// this.add(new JButton("按钮" + i));
}
this.pack();//自适应
this.setLocationRelativeTo(null);
this.setAlwaysOnTop(true);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
new Biao53();
}
}
(4)
package 实验五;
import java.awt.*;
import javax.swing.*;
public class Windows54 extends JFrame{
private JTextField t1;
private JTextArea jr;
private JRadioButton ju1;
private JRadioButton ju2;
private JRadioButton ju3;
private JRadioButton ju4;
private JCheckBox jc1;
private JCheckBox jc2;
private JCheckBox jc3;
private JCheckBox jc4;
Windows54(){
this.setTitle("进制转换");
// 取消外框
// this.setUndecorated(true);
JPanel jp = new JPanel();
JLabel jl1 = new JLabel("输入10进制数");
t1 = new JTextField(10);
//添加上部分
jp.add(jl1);
jp.add(t1);
//中部分
JPanel jp2 = new JPanel();
jr = new JTextArea(6,20);
//添加个文本域换行功能
jr.setLineWrap(true);
JScrollPane scroll = new JScrollPane(jr);
JLabel jl2 = new JLabel("请选择进制:");
//水平滚动条总是出现
// scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
//竖直滚动条总是出现
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jp2.add(scroll,BorderLayout.WEST);
jp2.add(jl2);
//尾部分
JPanel jp3 = new JPanel();
JPanel jp5 = new JPanel();
jc1 = new JCheckBox("2进制");
jc2 = new JCheckBox("8进制");
jc3 = new JCheckBox("16进制");
jc4 = new JCheckBox("10进制");
ju1 = new JRadioButton("2进制");
ju2 = new JRadioButton("8进制");
ju3 = new JRadioButton("16进制");
ju4 = new JRadioButton("10进制");
jp3.add(jc1);
jp3.add(jc2);
jp3.add(jc3);
jp3.add(jc4);
JPanel jp4 = new JPanel();
ButtonGroup bg = new ButtonGroup();
JLabel w1 = new JLabel("请选择进制");
jp4.add(w1);
//单选框放到一个组里,再分别放进面板
bg.add(ju1);
bg.add(ju2);
bg.add(ju3);
bg.add(ju4);
//分别放进面板
jp4.add(ju1);
jp4.add(ju2);
jp4.add(ju3);
jp5.add(ju4);
jp2.add(jp3,BorderLayout.NORTH );
jp2.add(jp4,BorderLayout.CENTER);
jp2.add(jp5,BorderLayout.CENTER);
//界面添加部分
this.add(jp, BorderLayout.NORTH);
this.add(jp2, BorderLayout.CENTER);
// this.add(jp5, BorderLayout.SOUTH);
// this.add(jp4, BorderLayout.PAGE_END);
//界面显示操作
// this.pack();
this.setSize(350,320);
this.setAlwaysOnTop(true);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
new Windows54();
}
}
(5)
package 实验五;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class add55 extends JFrame {
private JTextArea jr;
private JTextField t1;
private JTextField t2;
private JTextField t3;
public add55(){
this.setTitle("添加组件的窗口");
//文本域操作
jr = new JTextArea(6,23);
JPanel jp = new JPanel();
//添加个文本域换行功能
jr.setLineWrap(true);
JScrollPane scroll = new JScrollPane(jr);
//竖直滚动条总是出现
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//添加上部分
jp.add(scroll);
//中部分
JPanel jp2 = new JPanel();
JPanel jp3 = new JPanel();
JPanel jp4 = new JPanel();
JLabel w1 = new JLabel("用户名");
JLabel w2 = new JLabel("电话");
t1 = new JTextField(7);
t2 = new JTextField(7);
t3 = new JTextField(15);
JButton jb1 = new JButton("显示");
JButton jb2 = new JButton("退出");
//因为JButen是属于小器件类型的,所以一般的setSize不能对其惊醒大小的设置
//所以一般我们用button.setPreferredSize(new Dimension(30,30));
jb1.setPreferredSize(new Dimension(25,18));
jb2.setPreferredSize(new Dimension(25,18));
jb1.setBorder(BorderFactory.createRaisedBevelBorder());
jb2.setBorder(BorderFactory.createRaisedBevelBorder());
jb1.setFont(new java.awt.Font("宋体", 1, 10));
jb2.setFont(new java.awt.Font("宋体", 1, 10));
// jb1.setBackground(Color.gray);
// jb2.setBackground(Color.gray);
//添加进入面板
jp2.add(w1);
jp2.add(t1);
jp2.add(w2);
jp2.add(t2);
jp3.add(t3);
jp3.add(jb1);
jp3.add(jb2);
jp4.add(jp2);
jp4.add(jp3);
//添加到界面
this.add(jp,BorderLayout.NORTH);
this.add(jp4,BorderLayout.CENTER);
//界面显示操作
this.setSize(300,250);
this.setAlwaysOnTop(true);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(3);
//事件
jb1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jr.setText("用户名:"+t1.getText()+"\n"+"电 话:"+t2.getText());
t3.setText("你按下了“显示“按钮");
}
});
jb2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(3);
}
});
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
new add55();
}
}