java学习整理五


1.创建一个具有关闭功能的空白窗口(如图5-1)。

(知识点:在Eclipse下创建窗体,事件处理)

import java.awt.*;

import java.awt.event.*;

import javax.swing.JFrame;

public class SY5_1_JFrame 【代码1{//继承JFrame

public static void main(String[] args) {

new SY5_1_JFrame();

}

    //构造函数

public SY5_1_JFrame() {

   【代码2;// 创建标题为“JFrame窗口”窗口对象

   【代码3;// 设置窗口大小为400 x 200

   【代码4;// 设置窗口是可视的

//为窗口添加窗口事件适配用来关闭窗体,这里大家暂时照用就是

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {// 关闭窗口事件的方法

System.exit(0);

}

});

}

}

 

5-1 JFrame窗口

 

 

 

 

5-2 带组件的窗口

 

 

SY5_1_JFrame extends JFrame

 

2.在窗体界面上添加相应组件,程序运行结果如图5-2。

(知识点:在NetBeans/Eclipse下创建窗体,基本组件的使用,事件处理)

 

SY5_1_1_JFrame extends JFrame

 

3.编写窗体程序SY5_2_CalMoney,如图5-3所示,界面上设置三个文本框,第一个文本框给用户输入商品单价,第二个则是给用户输入商品数量,第三个用于显示总金额。

要求:①单价框和商品数量框中要求输入的只能数字;②当在单价框中按“回车”时商品数量框获得焦点,当在数量框中按“回车”时完成计算并在总金额框中显示总金额。

 

 

 

 

5-3 计算金额窗口

 

 

 

 

        

 

 

 

 

5-4 输入错误时提示

(知识点:在NetBeans/Eclipse下创建窗体,基本组件的使用,键盘事件处理,对话框)

package Exp05_03_20170566134;
import java.awt.Button;
import java.awt.KeyboardFocusManager;
import java.awt.event.*;
import java.io.Console;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class SY5_2_CalMoney extends JFrame implements ActionListener,KeyListener{//继承JFrame类
    private JLabel name;
    private JTextField nameField;
    private JLabel call;
    private JTextField nameField2;
    private JLabel money;
    private JTextField moneyField;
    public static void main(String[] args) {
        new SY5_2_CalMoney();
    }
    //构造函数
    public SY5_2_CalMoney() {
       super("JFrame");// 创建标题为“JFrame窗口”窗口对象
       setSize(250,150);// 设置窗口大小为400 x 200
       this.setLocationRelativeTo(null);//窗体居中显示
       
       name = new JLabel("商品单价");
       nameField = new JTextField("4.5");
       call = new JLabel("购买数量");
       nameField2 = new JTextField("20");
       money =new JLabel("应付金额");
       moneyField =new JTextField();
       
       this.setVisible(true);// 设置窗口是可视的
        //为窗口添加窗口事件适配用来关闭窗体,这里大家暂时照用就是
        addWindowListener(new WindowAdapter() {   //
            public void windowClosing(WindowEvent e) {// 关闭窗口事件的方法
                System.exit(0);
            }
        });
        setLayout(null);
        name.setBounds(30,10,80,20);
        nameField.setBounds(100,10,80,20);
        nameField.addActionListener(this);//数据绑定  以下两种方式均可
        nameField.addKeyListener(this);//数据绑定
        call.setBounds(30,45,80,20);
        nameField2.setBounds(100, 45, 80, 20);
        nameField2.addActionListener(this);//数据绑定  以下两种方式均可
        nameField2.addKeyListener(this);//数据绑定
        money.setBounds(30, 70, 80, 20);
        moneyField.setBounds(100, 75, 80, 20);
        moneyField.addActionListener(this);
        moneyField.setEditable(false);
        add(name);
        add(nameField);
        add(call);
        add(nameField2);
        add(money);
        add(moneyField);
        
        /*
         this.addKeyListener(new KeyAdapter()//这种方式也是的,但此时不使用  放在结构体里
           {
               public void keyPressed(KeyEvent e)
               {
                   if (e.getKeyCode() == KeyEvent.VK_ENTER)
                   {
                       e.consume();
                       KeyboardFocusManager.getCurrentKeyboardFocusManager().focusNextComponent();
                       
                   }
               }
           });
          */
    }
    boolean isDouble(String str)
    {
       try
       {
          Double.parseDouble(str);
          return true;
       }
       catch(NumberFormatException ex){}
       return false;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getSource()==nameField) {
            boolean isNum=nameField.getText().matches("[0-9]+");
            isNum = isDouble(nameField.getText());
            if (isNum) {
                
            } else {
                Object[] options = { "确定" }; 
                JOptionPane.showOptionDialog(null, "Click OK to continue", "Warning", 
                JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, 
                null, options, options[0]); 
                nameField.setText("");
            }
            nameField2.requestFocus();
        }
        if(e.getSource()==nameField2){
            //moneyField.requestFocus();
            Float mon = Float.parseFloat(nameField.getText())*Float.parseFloat(nameField2.getText());
            moneyField.setText(String.valueOf(mon));
        }
        
    }
    @Override
    public void keyPressed(KeyEvent e) {
        // TODO Auto-generated method stub
//        if (e.getKeyCode()==KeyEvent.VK_ENTER) {
//            nameField2.requestFocus();
//        } else if (e.getKeyCode()==KeyEvent.VK_ENTER) {
//            moneyField.requestFocus();
//        }else {
//            
//        }
    }
    @Override
    public void keyReleased(KeyEvent e) {}
    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub
        
    }
    
    
    
}
/*
 其他类型转String
String s = String.valueOf( value); // 其中 value 为任意一种数字类型。 
字符串型转换成各种数字类型:
String s = "169"; 


byte b = Byte.parseByte( s ); 


short t = Short.parseShort( s ); 


int i = Integer.parseInt( s ); 


long l = Long.parseLong( s ); 


Float f = Float.parseFloat( s ); 


Double d = Double.parseDouble( s );
 
 
 * */
SY5_2_CalMoney extends JFrame implements ActionListener,KeyListener

 

package Exp05_03_20170566134;

import java.applet.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class test extends Applet implements ActionListener {
TextField userText, passText;
Button loginButton;
public void init() {
userText = new TextField(10);
passText = new TextField(10);
loginButton = new Button("login");
add(userText);
add(passText);
add(loginButton);
userText.addActionListener(this);
passText.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == userText)
passText.requestFocus();
else if (e.getSource() == passText)
loginButton.requestFocus();
}
}
test extends Applet implements ActionListener

 

4.编写菜单程序SY5_3_Menu,如图9-5所示,在窗口中添加菜单栏,在菜单栏添加菜单项,并添加下拉菜单和2 级菜单,通过选择菜单项可以执行不同操作,如“打开”可打开SY9_3_Menu类生成的窗口。(知识点:在NetBeans/Eclipse下创建窗体,菜单,事件处理)

 

 

 

                                                               5-5 菜单应用窗口

 

 

package Exp05_04_20170566134;
import java.awt.Button;
import java.awt.event.*;
import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.filechooser.FileSystemView;
public class SY5_3_Menu extends JFrame implements ActionListener{//继承JFrame类
    JMenu jm1,jm2,twojm1;
    JMenuBar jmb;
    JMenuItem jmt1,jmt2,jmt3;
    
    JMenuItem two01,two02,two03;
    
    private Button exitButton;
    public static void main(String[] args) {
        new SY5_3_Menu();
    }
    //构造函数
    public SY5_3_Menu() {
       super("菜单应用");// 创建标题为“JFrame窗口”窗口对象
       setSize(400,200);// 设置窗口大小为400 x 200
       this.setLocationRelativeTo(null);//窗体居中显示
       jmb=new JMenuBar();
       jm1=new JMenu("文件");
       jm2=new JMenu("帮助");
       jmb.add(jm1);
       jmb.add(jm2);
       
       jmt1=new JMenuItem("打开");
       jmt2=new JMenuItem("关闭");
       jmt3=new JMenuItem("退出");
       
       twojm1=new JMenu("编辑");
       two01=new JMenuItem("复制");
       two02=new JMenuItem("剪切");
       two03=new JMenuItem("粘贴");
       twojm1.add(two01);
       twojm1.add(two02);
       twojm1.add(two03);
       
       jm1.add(jmt1);
       jm1.add(jmt2);
       jm1.add(twojm1);
       jm1.add(jmt3);
       this.add(jmb,"North");
       
       exitButton =new Button("退出");
       this.setVisible(true);// 设置窗口是可视的
        //为窗口添加窗口事件适配用来关闭窗体,这里大家暂时照用就是
        addWindowListener(new WindowAdapter() {   //
            public void windowClosing(WindowEvent e) {// 关闭窗口事件的方法
                System.exit(0);
            }
        });
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(null);
        jmt1.addActionListener(this);
        jmt2.addActionListener(this);
        jmt3.addActionListener(this);
        
        two01.addActionListener(this);
        two02.addActionListener(this);    
        two03.addActionListener(this);
        
        add(jmb,"North");
        exitButton.setBounds(160, 135, 50, 20);
        exitButton.addActionListener(this);
        add(exitButton);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getSource() == jmt1) {  //打开
            JFileChooser chooser = new JFileChooser(new File(System.getProperty("user.dir")+"/src/Exp05_04_20170566134"));
            chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
            chooser.showDialog(new JLabel(), "选择");
            System.out.println(System.getProperty("user.dir"));
            
            //File file = chooser.getSelectedFile();
            //textField.setText(file.getAbsoluteFile().toString());//importent
        }else if (e.getSource() == jmt2) {  //关闭
            
        }else if (e.getSource() == jmt3) {  //退出
            System.exit(0);
        }else if (e.getSource() == two01) {   //复制
            
        }else if (e.getSource() == two02) {   //剪切
            
        }else if (e.getSource() == two03) {   //粘贴
            
        }else if (e.getSource() == exitButton) {
            System.exit(0);
        } else {
            
        }
    }
}


/*
 * 参考路径选择文档

    https://blog.csdn.net/u010142437/article/details/78262895
*/
SY5_3_Menu extends JFrame implements ActionListener

 

5.[SY5_4.java]编写一个算术测试小软件,用来训练小学生的算术能力。程序由3个类组成,其中GeneratorTM类对象负责给出算术题目,并判断回答者的答案是否正确;ComputerFrame类对象负责为算术题目提供界面,程序运行结果如图5-6所示。(知识点:在NetBeans/Eclipse下创建窗体,基本组件,事件处理,类与类之间关系,MVC初步了解)

 

 

 

 

5-6 算术测试小软件

 

package Exp05_05_20170566134;
import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;


public class ComputerFrame implements ActionListener{
    
    JFrame suanshu = new JFrame("算数测试小软件");
    
    String[] num={"30","50","100"};
    JLabel nameLabel  = new JLabel("选择算数范围");
    JComboBox number = new JComboBox();
    JButton button = new JButton("获取题目");
    JTextField beijianshu = new JTextField();
    JTextField jianshu = new JTextField();
    JTextField daan = new JTextField();
    JLabel jiahao = new JLabel("-");
    JLabel dengyu = new JLabel("=");
    JButton queren = new JButton("确认答案");
    JLabel jieguo = new JLabel("");
    
    int Answerjieguo;
    
    public ComputerFrame() {
        
        suanshu.setSize(480, 200);
        suanshu.setLayout(null);
        suanshu.setLocationRelativeTo(null);
        
        for (int i = 0; i < num.length; i++) {
            number.addItem(Integer.parseInt(num[i]) );
        }
        nameLabel.setBounds(15, 20, 80, 20);
        number.setBounds(110, 20, 50, 20);
        button.setBounds(180, 20, 100, 20);
        button.addActionListener(this);
        beijianshu.setBounds(20, 50, 80, 20);
        beijianshu.setEditable(false);
        jianshu.setBounds(150, 50, 80, 20);
        jianshu.setEditable(false);
        jiahao.setBounds(120, 50, 10, 20);
        dengyu.setBounds(240, 50, 20, 20);
        daan.setBounds(270, 50, 80, 20);
        queren.setBounds(350, 50, 90, 20);
        queren.addActionListener(this);
        jieguo.setBounds(240, 80, 100, 20);
        
        suanshu.add(nameLabel);
        suanshu.add(number);
        suanshu.add(button);
        suanshu.add(beijianshu);
        suanshu.add(jianshu);
        suanshu.add(jiahao);
        suanshu.add(dengyu);
        suanshu.add(daan);
        suanshu.add(queren);
        suanshu.add(jieguo);
        
        
        suanshu.setVisible(true);
        
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if ("获取题目".equals(e.getActionCommand())) {
            System.out.println(number.getSelectedItem());
            GeneratorTM naTm = new GeneratorTM((int)number.getSelectedItem().hashCode());    
            beijianshu.setText(naTm.beijianshu+"");
            jianshu.setText(naTm.jianshu+"");
            Answerjieguo = naTm.getDaan();
        }
        if("确认答案".equals(e.getActionCommand())) {
            
            System.out.println(daan.getText());
            
            try {
                if (Answerjieguo ==Integer.parseInt(daan.getText())) {
                    System.out.println("你回答正确");
                    jieguo.setText("你回答正确");
                }else {
                    System.out.println("你回答错误");
                    jieguo.setText("你回答错误");
                    daan.setText("");
                }
            } catch (Exception e2) {
                System.out.println("你的输入格式有误!");
                daan.setText("");
            }
        }
        
    }
    
}
ComputerFrame implements ActionListener

 

package Exp05_05_20170566134;

public class GeneratorTM {
    
    protected int beijianshu;
    protected int jianshu;
    protected int daan;
    
    public GeneratorTM(int max) {
        this.beijianshu = (int)(1+Math.random()*max);
        this.jianshu = (int)(1+Math.random()*max);
        this.daan = this.beijianshu-this.jianshu;
        
    }

    public int getDaan() {
        return daan;
    }
    
}
GeneratorTM

 

package Exp05_05_20170566134;

public class test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new ComputerFrame();
    }

}
test

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM