第七次实验报告 Swing及事件

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

辽宁工程技术大学上机实验报告
实验要求:
(1)组件在窗口中的位置尽量按要求摆放。

(2)响应窗口的环比事件。

(3)实验四不需要写在报告上。

实验内容:
(1)设计一个简易计算器,在“操作数”标签右侧的两个文本框输入操作数,当单击“+,-,*,/”按钮时,对两个操作数进行运算并将结果填到“结果”标签右侧的文本框中。

程序:import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import javax.swing.*;
import javax.swing.border.LineBorder;
import javax.swing.text.JTextComponent;
class MyApp extends JFrame{
JTextField b1=new JTextField("0",12);
JTextField b2=new JTextField("0",12);
JTextField b3=new JTextField("0",12);
JTextField b4=new JTextField("0",12);
MyApp(){
super("简易计算器");
Container c=getContentPane();
c.setLayout(new FlowLayout());
JPanel a1 =new JPanel(new FlowLayout());
JPanel a2 =new JPanel(new FlowLayout());
JPanel a3 =new JPanel(new FlowLayout());
JPanel a4 =new JPanel(new FlowLayout());
JPanel a5 =new JPanel(new FlowLayout());
JLabel jb1 =new JLabel("数字一:");
JLabel jb2 =new JLabel("数字二:");
JLabel jb3 =new JLabel("操作:");
JLabel jb4 =new JLabel("结果:");
JButton c1=new JButton("+");
JButton c2=new JButton("-");
JButton c3=new JButton("*");
JButton c4=new JButton("/");
JButton c5=new JButton("重置");
a1.add(jb1); a1.add(b1);
a2.add(jb2); a2.add(b2);
a3.add(jb3); a3.add(c1); a3.add(c2); a3.add(c3); a3.add(c4);
a4.add(jb4); a4.add(b4);
a5.add(c5);
c.add(a1);
c.add(a2);
c.add(a3);
c.add(a4);
c.add(a5);
c1.addActionListener(new ActionListener(){ p ublic void actionPerformed(ActionEvent e){ E1(e);
}
});
c2.addActionListener(new ActionListener(){ p ublic void actionPerformed(ActionEvent e){ E2(e);
}
});
c3.addActionListener(new ActionListener(){ p ublic void actionPerformed(ActionEvent e){ E3(e);
}
});
c4.addActionListener(new ActionListener(){ p ublic void actionPerformed(ActionEvent e){ E4(e);
}
});
c5.addActionListener(new ActionListener(){ p ublic void actionPerformed(ActionEvent e){ E5(e);
}
});
setSize(270,250);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
protected void E1(ActionEvent e){
double z1=Double.parseDouble(b1.getText());
double z2=Double.parseDouble(b2.getText());
DecimalFormat f1=new DecimalFormat("#.000");
String s1=f1.format(z1+z2);
b4.setText(s1);
}
protected void E2(ActionEvent e){
double z1=Double.parseDouble(b1.getText());
double z2=Double.parseDouble(b2.getText());
DecimalFormat f1=new DecimalFormat("#.000");
String s1=f1.format(z1-z2);
b4.setText(s1);
}
protected void E3(ActionEvent e){
double z1=Double.parseDouble(b1.getText());
double z2=Double.parseDouble(b2.getText());
DecimalFormat f1=new DecimalFormat("#.000");
String s1=f1.format(z1*z2);
b4.setText(s1);
}
protected void E4(ActionEvent e){
double z1=Double.parseDouble(b1.getText());
double z2=Double.parseDouble(b2.getText());
DecimalFormat f1=new DecimalFormat("#.000");
if(z2!=0){
String s1=f1.format(z1/z2);b4.setText(s1);
}
else{
b4.setText("Error!");
}
}
protected void E5(ActionEvent e){
b1.setText("0");
b2.setText("0");
b4.setText("0");
}
public static void main(String args[]){
new MyApp();
}
}
结果:(加法)
(2)编写文本移动程序,窗口中有两个文本区和两个按钮,文本区分别位于窗口的左边和
右边区域,2个按钮位于窗口的中间区域,当单击“→”按钮时,将左边文本区选中的内容添加到右侧的文本区的末尾。

当单击“←”按钮时,将右侧文本区中选定的内容添加到左侧文本区的末尾。

提示:在文本区中可以使用getSelectedText方法获得通过鼠标拖动选定的文本,可以将“→”和“←”按钮放入Panel组件中,再将Panel组件加入窗口中。

程序:import java.awt.*;
import java.awt.event.*;
import java.text.DecimalFormat;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
class MyApp1 extends JFrame{
JTextArea b1 = new JTextArea(5, 15);
JTextArea b2 = new JTextArea(5, 15);
MyApp1(){
super("文本移动");
Container c=getContentPane();
c.setLayout(new FlowLayout());
JPanel a1 =new JPanel(new BorderLayout());
JPanel a2 =new JPanel(new BorderLayout());
JPanel a3 =new JPanel(new BorderLayout());
JPanel a4 =new JPanel(new FlowLayout());
JLabel jb1 =new JLabel("文本1");
JLabel jb2 =new JLabel("文本2");
JButton c1=new JButton("←");
JButton c2=new JButton("→");
JButton c3=new JButton("清除");
a1.add(jb1); a1.add(b1,BorderLayout.EAST);
a2.add(c1,BorderLayout.NORTH);
a2.add(c2,BorderLayout.SOUTH);
a3.add(jb2); a3.add(b2,BorderLayout.WEST);
a4.add(c3);
c.add(a1);
c.add(a2);
c.add(a3);
c.add(a4);
c1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
E1(e);
}
});
c2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){ E2(e);
}
});
c3.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ E3(e);
}
});
setSize(500,180);
setVisible(true);
s etDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
p rotected void E1(ActionEvent e){
String z1=b1.getText()+b2.getSelectedText();
b1.setText(z1);
}
p rotected void E2(ActionEvent e){
String z1=b2.getText()+b1.getSelectedText();
b2.setText(z1);
}
p rotected void E3(ActionEvent e){
b1.setText("");
b2.setText("");
}
p ublic static void main(String args[]){
new MyApp1();
}
}
结果:
(3)编写“背单词”的程序。

系统从词库中随机抽取英文单词,通过一个JLabel组件显示对应的中文,让用户在JTextField组件中输入英文单词。

如果用户输入的英文单词出错,按回车键后,系统在另一个JLabel组件显示“对不起!答错了!”,直到用户输入的英文单词,按回车键后,系统显示“恭喜你!答对了!”。

该过程可以持续进行,直到用户终止程序。

(提示:英文词库和对应的中文词库可以通过字符串数组实现。


程序:package zhang;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class CopyDemo extends JFrame {
public CopyDemo(){
setSize(250, 150);// 设置窗体大小
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);// 单击关闭按钮时关闭窗体
Container cp = getContentPane();
getContentPane().setLayout(new FlowLayout());// 设置布局
String a[]=new String[]{"one","two","three"};
String b[]=new String[]{"一","二","三"};
int s=(int)Math.random();
/*if(s<=a.length){
System.out.println(a[s].toString());
}*/
JLabel j1=new JLabel();
j1.setText(b[s].toString());
final JTextField t = new JTextField("请输入对应的英文单词(按回车键结束):",30);
final JLabel j2=new JLabel();
t.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
t.setText("");// 设置文本域内容
if(t.getText().equals(a[s])){
j2.setText("恭喜你答对了!");
}
else
j2.setText("对不起,答错了!");
}
});
cp.add(j1,cp.TOP_ALIGNMENT); cp.add(t,cp.CENTER_ALIGNMENT); cp.add(j2,cp.BOTTOM_ALIGNMENT); setVisible(true);// 设置窗体可见
}
public static void main(String[] args) { new CopyDemo();
}
}
结果:。

相关文档
最新文档