import java.awt.*;
import java.awt.event.*;/*事件监听器所在包*/ public class notpad {
public static void main(String[] args) {
Frame f=new Frame(\文本编辑器\建立窗口 窗口标题*/ f.setSize(700,550);/*窗口大小*/
f.addWindowListener(new WindowAdapter() /*窗口事件监听器*/ {
public void windowClosing(WindowEvent e) /*窗口关闭按钮*/ {
System.exit(0);/*退出程序*/ } });
MenuBar mb=new MenuBar();/*定义一个菜单容器*/ Menu m1=new Menu(\定一个菜单项*/
Menu m2=new Menu(\另一个菜单项 作为级联菜单项*/ Menu m3=new Menu(\
MenuItem mi1=new MenuItem(\新建\定义菜单功能项*/ MenuItem mi2=new MenuItem(\打开\ MenuItem mi3=new MenuItem(\存储\ MenuItem mi4=new MenuItem(\ MenuItem mi5=new MenuItem(\退出\
MenuItem mi6=new MenuItem(\粘贴\定义菜单功能项并附加快捷键*/ MenuItem mi7=new MenuItem(\剪切\ MenuItem mi8=new MenuItem(\拷贝\ MenuItem mi9=new MenuItem(\帮助主题\ MenuItem mi10=new MenuItem(\ MenuItem mi11=new MenuItem(\关于\ /*
菜单中退出 的事件监听 */
mi5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);/*退出程序*/ } });
m1.add(mi1); m1.add(mi2); m1.add(mi3); m1.add(mi4);
m1.add(mi5); m2.add(mi6); m2.add(mi7); m2.add(mi8); m3.add(mi9); m3.add(mi10); m3.add(mi11);
mb.add(m1);/*菜单项加载到菜单容器*/ mb.add(m2); mb.add(m3);
f.setMenuBar(mb);/*菜单容器挂载到窗体*/ Button but1 = new Button(\新建\ Button but2 = new Button(\打开\ Button but3 = new Button(\存储\ Panel pa = new Panel();
pa.setLayout(new FlowLayout(FlowLayout.LEFT)); pa.add(but1); pa.add(but2); pa.add(but3);
pa.setBackground(Color.gray); f.add(pa,\
TextArea ta = new TextArea(); f.add(ta,\
f.show();/*显示窗体*/ } }
3,综合应用:
编写一个程序实现一个仿真计算器。包括十个数字按钮(0~9)和四个运算符(加减、乘、除),以及等号,小数点和清零两个辅助按钮,还有一个显示输入和输出的文本框。试分别用BorderLayout和 GridLayout实现。 修改意见:用一真实计算界面来设计。
import java.awt.*;
import java.awt.event.*; import javax.swing.*;
import javax.swing.event.*;
public class test_computer extends JFrame /*继承小程序类 实现 ActionListener接口*/ {
double su1; double su2;
int cmpch; //0,1,2,3: +,-,*,/ JTextField jtf = new JTextField();
JButton[] but = new JButton[17];/*定义16个按钮*/ Panel pan = new Panel(); Panel pan2 = new Panel();
JLabel lab = new JLabel(\制作: 耀良\ test_computer () {
setLayout(new BorderLayout(2,2));/*BorderLayout布局*/ jtf.setHorizontalAlignment(JTextField.CENTER); jtf.setEditable(false);
pan.setLayout(new GridLayout(4,4,10,10));/*GridLayout布局 定义布局 4行4列 x 10 y 10*/
pan2.setLayout(new BorderLayout(2,2)); for(int i=0; i<10; i++) {
but[i] = new JButton(Integer.toString(i));/*建立按钮*/ but[i].addActionListener(new digitalhd());/*建立监听*/ }
but[10] = new JButton(\
but[10].addActionListener(new digitalhd());/*建立监听*/
but[11] = new JButton(\建立按钮*/ but[12] = new JButton(\ but[13] = new JButton(\ but[14] = new JButton(\
for(int i=11; i<15; i++) {
but[i].addActionListener(new computerhd());/*建立监听*/ }
but[15] = new JButton(\ but[16] = new JButton(\清空\
but[15].addActionListener(new elsehd()); but[16].addActionListener(new elsehd()); pan.add(but[7]);/*加载到窗体*/
pan.add(but[8]); pan.add(but[9]); pan.add(but[10]); pan.add(but[4]); pan.add(but[5]); pan.add(but[6]); pan.add(but[11]); pan.add(but[1]); pan.add(but[2]); pan.add(but[3]); pan.add(but[12]); pan.add(but[0]); pan.add(but[15]); pan.add(but[14]); pan.add(but[13]);
pan2.add(lab,\ pan2.add(but[16],\ add(jtf,\ add(pan,\ add(pan2,\
lab.setForeground(Color.blue); lab.setText(\制作: 老岩\
setSize(300,200);/*窗口大小*/ setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE); }
public static void main(String[] args) { JFrame jf=new test_computer(); }
class digitalhd implements ActionListener { public void actionPerformed(ActionEvent e) { String dig=jtf.getText(); if(e.getSource()==but[10]) dig=dig+\ else for(int i=0;i<10;i++) if(e.getSource()==but[i]) dig+=String.valueOf(i);
try{ Double dd=Double.parseDouble(dig); }
catch(NumberFormatException nfe){ dig=jtf.getText(); }
jtf.setText(dig); } }
class computerhd implements ActionListener { public void actionPerformed(ActionEvent e) { su1=Double.parseDouble(jtf.getText()); jtf.setText(\
for(int i=11;i<15;i++)
if(e.getSource()==but[i]) cmpch=i-11; } }
class elsehd implements ActionListener
{ public void actionPerformed(ActionEvent e) { String str=\ //jtf.setText(\
if(e.getSource()==but[15]) {
su2=Double.parseDouble(jtf.getText());
switch(cmpch)
{case 0: str=String.valueOf(su1+su2);su1=su1+su2;break; case 1: str=String.valueOf(su1-su2);su1=su1-su2;break; case 2: str=String.valueOf(su1*su2);su1=su1*su2;break; case 3: str=String.valueOf(su1/su2);su1=su1/su2;break; //“su1=”用于实现连续运算:1+2+3+4 }
jtf.setText(str); } else
{su1=0;su2=0;digital=-1; jtf.setText(\ } } } }
第十一次上次作业 Applet程序
实验目的: