滴水穿石-10GUI

Posted 逍遥小天狼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了滴水穿石-10GUI相关的知识,希望对你有一定的参考价值。

GUI 图形用户界面

1 Frame 窗体

package d10;
//第一导入包
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;


public class Frame1 {

    public static void main(String[] args) {
        // 创建窗体并命名
        Frame f  = new Frame("HelloWorld");
        // 设置窗体大小
        //f.setSize(400, 300);
        // 设置窗体位置
        //f.setLocation(500, 300);
        
        //方法二 setBounds(x, y, width, height);
        f.setBounds(400,300, 500, 300);
        
        f.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                // TODO Auto-generated method stub
                System.exit(0);
            }
        });
    
        //显示窗体
        f.setVisible(true);
    }

}
version 1.0
package d10;
import java.awt.Button;
import java.awt.FlowLayout;
//第一导入包
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 


public class Frame1 {

    public static void main(String[] args) {
        //01 创建窗体并命名
        Frame f  = new Frame("HelloWorld");         
     
        f.setBounds(400,300, 500, 300);
        //02-01创建 按钮 对象
        Button bu = new Button("点我");
        //02-02 按钮点击事件的监听
        bu.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                 System.out.println("再点一个试试!");
            }
        });
        //01-02 设置窗体布局方式
        f.setLayout(new FlowLayout());
        //01-03 将按钮添加到Frame中
        f.add(bu);
        //01-04 窗体关闭事件的监听
        f.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                // TODO Auto-generated method stub
                System.exit(0);
            }
        });
    
        //显示窗体
        f.setVisible(true);
    }

}
version 2.0

package d10;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Frame2 {
    public static void main(String[] args) {
        //01-01 创建窗体对象那个
        Frame f = new Frame(); 
        //01-02 设置窗体位置
        f.setBounds(500, 300, 400, 300);
        //01-03 设置窗体布局方式
        f.setLayout(new FlowLayout());
        
        //02-01 创建元素
        TextField tf = new TextField(20);//02-01-01 创建文本框
        Button bu = new Button("数据转移");//02-01-02 创建按钮
        TextArea ta = new TextArea(10,20);//02-01-03 创建文本域
        //02-02 将元素添加到Frame中
        f.add(tf);
        f.add(bu); 
        f.add(ta);
        //02-03 为按钮添加监听事件
        bu.addActionListener(new ActionListener() {             
            public void actionPerformed(ActionEvent e) {
                //02-03-01 获取文本框的值
                String tf_str = tf.getText().trim();
                //02-03-02 清空文本框的值
                tf.setText("");
                //02-03-03 追加到文本域中
                ta.append(tf_str+"\\r\\n");
                //02-03-04 文本框获取焦点
                tf.requestFocus();
                
            }
        });
        //01-04 添加窗体关闭 监听事件
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        
         
        //01-05 设置窗体显示
        f.setVisible(true);
    }
}
将文本框的值转移到文本域

 

 

package d10;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
//第一导入包
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 


public class Frame3 {

    public static void main(String[] args) {
        //01 创建窗体并命名
        Frame f  = new Frame("HelloWorld");         
     
        f.setBounds(400,300, 500, 300);
        //02-01创建 按钮 对象
        Button bured = new Button("");
        bured.setBackground(Color.red);
        Button bugreen = new Button("绿");
        bugreen.setBackground(Color.green);
        Button bublue = new Button("");
        bublue.setBackground(Color.blue);
        
        //02-02 鼠标事件的监听
        bured.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                 f.setBackground(Color.red);
            }
            @Override
            public void mouseExited(MouseEvent e) {
                 f.setBackground(Color.white);
            }
        });
        bugreen.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                 f.setBackground(Color.green);
            }
            @Override
            public void mouseExited(MouseEvent e) {
                 f.setBackground(Color.white);
            }
        });
        bublue.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                 f.setBackground(Color.blue);
            }
            @Override
            public void mouseExited(MouseEvent e) {
                 f.setBackground(Color.white);
            }
        });
        //01-02 设置窗体布局方式
        f.setLayout(new FlowLayout());
        //01-03 将按钮添加到Frame中
        f.add(bured);f.add(bugreen);f.add(bublue);
        //01-04 窗体关闭事件的监听
        f.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                // TODO Auto-generated method stub
                System.exit(0);
            }
        });
    
        //显示窗体
        f.setVisible(true);
    }

}
变换背景色

 

package d10;

 
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Frame4 {
    public static void main(String[] args) {
        //01-01 创建窗体对象那个
        Frame f = new Frame(); 
        //01-02 设置窗体位置
        f.setBounds(500, 300, 400, 300);
        //01-03 设置窗体布局方式
        f.setLayout(new FlowLayout());
        
        //02-01 创建元素
        Label lb = new Label("只能输入数字");
        TextField tf = new TextField(20);//02-01-01 创建文本框
     
        //02-02 将元素添加到Frame中
        f.add(lb);
        f.add(tf);
         
        //02-03 为文本框添加键盘监听事件
        tf.addKeyListener(new KeyAdapter() {
            //键盘释放的时候做判断
            public void keyPressed(KeyEvent e) {    
                char ch = e.getKeyChar();         
                 
                if (!(ch>=\'0\'&&ch<=\'9\')) {
                    e.consume();
                }  
            }
        });
         
        //01-04 添加窗体关闭 监听事件
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        
         
        //01-05 设置窗体显示
        f.setVisible(true);
    }
}
只能输入数字--键盘监听事件

 

package d10;
import java.awt.Button;
import java.awt.FlowLayout;
//第一导入包
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 


public class Frame5 {

    public static void main(String[] args) {
        //01 创建窗体并命名
        Frame f  = new Frame("HelloWorld");     
        f.setBounds(400,300, 500, 300);
        //02-01创建 菜单 对象
        MenuBar mb = new MenuBar();//02-01创建菜单条
        Menu mu = new Menu("文件");//02-02 创建菜单
        MenuItem mi = new MenuItem("退出系统");//02-03 创建菜单项
        
        //02-02放置 菜单 对象
        mu.add(mi);
        mb.add(mu);
        
        //02-03 菜单项点击事件的监听
        
        mi.addActionListener(new ActionListener() {            
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        //01-02 设置窗体布局方式
        f.setLayout(new FlowLayout());
        //01-03 将菜单条添加到Frame中
        f.setMenuBar(mb);
        //01-04 窗体关闭事件的监听
        f.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                // TODO Auto-generated method stub
                System.exit(0);
            }
        });
    
        //显示窗体
        f.setVisible(true);
    }

}
一级菜单

 

package d10;
 
import java.awt.FlowLayout;
//第一导入包
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
 


public class Frame6 {

    public static void main(String[] args) {
        //01 创建窗体并命名
        Frame f  = new Frame("多级菜单");     
        final String fTitle = f.getTitle();
        f.setBounds(400,300, 500, 300);
        //02-01创建 菜单 对象
        MenuBar mb = new MenuBar();//02-01-01创建菜单条
        Menu mu = new Menu("文件");//02-01-02 创建一级菜单
        
        Menu mu2 = new Menu("设置标题");//02-01-03 创建二级菜单
        MenuItem mi2_01 = new MenuItem("好好学习");//02-01-03-01 创建菜单项
        MenuItem mi2_02 = new MenuItem("天天向上");//02-01-03-02 创建菜单项
        MenuItem mi2_03 = new MenuItem("恢复标题");//02-01-03-03 创建菜单项
        
        MenuItem mi_02 = new MenuItem("打开记事本");//02-01-02-02 创建菜单项
        MenuItem mi_03 = new MenuItem("退出系统");//02-01-02-03 创建菜单项
        
        //02-02放置 菜单 对象
        mu.add(mu2);
        mu2.add(mi2_01);
        mu2.add(mi2_02);
        mu2.add(mi2_03);
        mu.add(mi_02);
        mu.add(mi_03);
        mb.add(mu);
        
        //02-03 菜单项点击事件的监听
        mi2_01.addActionListener(new ActionListener() {            
            //好好学习
            public void actionPerformed(ActionEvent e) {
                f.setTitle(mi2_01.getLabel());
            }
        });
        mi2_02.addActionListener(new ActionListener() {            
            //天天向上
            public void actionPerformed(ActionEvent e) {
                f.setTitle(mi2_02.getLabel());
            }
        });
        mi2_03.addActionListener(new ActionListener() {            
            //恢复标题
            public void actionPerformed(ActionEvent e) {
                f.setTitle(fTitle);
            }
        });
        mi_02.addActionListener(new ActionListener() {            
            //打开记事本
            public void actionPerformed(ActionEvent e) {
                Runtime rt =  Runtime.getRuntime();
                try {
                    rt.exec("notepad");
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        });
        
        mi_03.addActionListener(new ActionListener() {            
            //退出系统
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        //01-02 设置窗体布局方式
        f.setLayout(new FlowLayout());
        //01-03 将菜单条添加到Frame中
        f.setMenuBar(mb);
        //01-04 窗体关闭事件的监听
        f.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                // TODO Auto-generated method stub
                System.exit(0);
            }
        });
    
        //显示窗体
        f.setVisible(true);
    }

}
多级菜单

 2:NetBeans 的使用

2.1 小型计算器

  public CalculateFrame() {
        initComponents();
        init();
    }

    private void init() {
        //设置标题
        this.setTitle("小型计算器");
    }
2.1.1 设置标题
  private void btnCalculateActionPerformed(java.awt.event.ActionEvent evt) {                                             

        //获取第一个操作数的值
        String sFirst = this.txtFirst.getText().trim();
        //获取第二个操作数的值
        String sSecond = this.txtSecond.getText().trim();
        //获取运算符的值
        String sOperator = this.cbOperator.getSelectedItem().toString().trim();

        //通过正则表达式 判断输入的内容是否合法
        String regex = "\\\\d+";
        if (!sFirst.matches(regex)) {
            //弹框提示
            JOptionPane.showMessageDialog(this, this.lblFirst.getText() + "格式不正确");
            this.txtFirst.setText("");
            this.txtFirst.requestFocus();
            return;
        }
        if (!sSecond.matches(regex)) {
            //弹框提示
            JOptionPane.showMessageDialog(this, this.lblSecond.getText() + "格式不正确");
            this.txtSecond.setText("");
            this.txtSecond.requestFocus();
            return;
        }
        int iResult = 0;

        int iFirst = Integer.parseInt(sFirst);
        int iSecond = Integer.parseInt(sSecond);
        switch (sOperator) {
            case "+":
                iResult = iFirst + iSecond;
                break;
            case "-":
                iResult = iFirst - iSecond;
                break;
            case "*":
                iResult = iFirst * iSecond;
                break;
            case "/":
                iResult = iFirst / iSecond;
                break;
        }
        this.txtResult.setText(String.valueOf(iResult));
    }                                            
2.1.2 计算按钮监听事件

2.1.3 修改窗体的图标

添加两个包,用于放置图片和设置UI操作

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package D10.Util;

import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JFrame;

/**
 *专门做界面效果的类
 * @author Administrator
 */
public class UiUtil {
    private UiUtil(){}
    
    public static void setFrameImage(JFrame jf){
      //01 获取工具类对象
      Toolkit tk =  Toolkit.getDefaultToolkit();
      
      //根据路径获取图片
     Image i = tk.getImage("src\\\\D10\\\\Resource\\\\jjcc.jpg");
     jf.setIconImage(i);
    }
}
2.1.3 修改图标
private void init() {
        //设置标题
        this.setTitle("小型计算器");
        //设置窗体图标
        UiUtil.setFrameImage(this);
    }
修改初始化方法

 

 public static void setFrameCenter(JFrame jf) {
        //01 获取工具类对象
        Toolkit tk = Toolkit.getDefaultToolkit();

        //02 获取屏幕的宽和高
        Dimension d = tk.getScreenSize();
        double srceenWidth = d.getWidth();
        double srceenHeight = d.getHeight();
        //03 获取窗体的宽和高
        int frameWidth = jf.getWidth();
        int frameHeight = jf.getHeight();
        //04 计算新的位置
        int width = (int) (srceenWidth - frameWidth) / 2;
        int height = (int) (srceenHeight - frameHeight) / 2;
        
        //05 设置窗体坐标
        jf.setLocation(width, height);
    }
2.1.4 窗体居中
 private void init() {
        //设置标题
        this.setTitle("小型计算器");
        //设置窗体图标
        UiUtil.setFrameImage(this);
        //设置窗体居中
        UiUtil.setFrameCenter(this);
    }
修改初始化方法

 2.1.5 修改皮肤

2.1.5.1 引用jar包

2.1.5.2 修改main方法

    public static void main(String args[]) {
        /*<

以上是关于滴水穿石-10GUI的主要内容,如果未能解决你的问题,请参考以下文章

QT 实用代码片段

滴水Win32练习壳的学习与实现

滴水穿石-08IO

滴水穿石-12 设计模式

滴水穿石-07Java开发中常见的错误

滴水穿石-04Eclipse中常用的快捷键