zoukankan      html  css  js  c++  java
  • Java的GUI设计

    这里笔者写一些自己做GUI时候的心得,希望可以帮助需要学习的同学,函数的实现和界面设计不在同一个文件中,且涉及参数的传递

    一、继承于JFrame

      当遇到继承于JFrame的类的时候,可以省去建立对象,直接使用组件

    1 setBounds(200, 200, 500, 400);
    2 getContentPane().setBackground(Color.gray);
    3 setVisible(true);
    4 setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    5 setTitle("MENU");

    其中setBounds是设计窗口的大小,getContentPane是设计组件的,setdefault设计关闭类型这些内容在使用时可以
    去查一下使用的手册,由于在构建程序的时候涉及到参数的传递,因此在传递时要注意参数的一一对应关系
    在使用的时候Button按钮需要建立监听。其中还包括从键盘的监听

    1 setBounds(200, 200, 500, 400);
    2 getContentPane().setBackground(Color.gray);
    3 setVisible(true);
    4 setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    5 setTitle("MENU");



     1 public void Set_User_Output(JTextField op){
     2     Output_Text = op;
     3     // 注册监听键盘事件监听器
     4     Output_Text.addKeyListener(new KeyAdapter() {
     5         // 处理键盘事件
     6         @Override
     7         public void keyTyped(KeyEvent e) {
     8             char key = e.getKeyChar();
     9             if(!(key >= KeyEvent.VK_0 && key <= KeyEvent.VK_9)){
    10                 int su = JOptionPane.showConfirmDialog(null, "please enter Number", "WARNING",JOptionPane.OK_CANCEL_OPTION);
    11                 if (su == 0){
    12                     Output_Text.setText("");
    13                 }
    14                 e.consume();
    15             }
    16         }
    17     });
    18 }


    监听对象也是要一一对应,不能出错,最后一个是传递当前的窗口,可以在其他的类中间关闭这个窗口的使用使用【建立的JFrame的对象】.dispose()
    就可以关闭这个窗口,再通过建立的接收对象获取到用户接收到的内容
    1 gui.Change_Pass_Button(Change_Pass);
    2 gui.Logoff_Button(Logoff);
    3 gui.Exit_Button(Exit);
    4 gui.Query_Button(Query);
    5 gui.WithDraw_Money_Button(WithDraw_Money);
    6 gui.Save_Money_Button(Save_Money);
    7 gui.Last_Button(Last);
    8 gui.Set_JFrame(this);


    以上方法基本完成了对文本的操作内容和实现函数之间的参数传递,每次在使用的时候一定要添加异常处理异常处理可以简化代码的错误判断
    如果能详细的报出错误,代码就十分的友好。在取消判断是或者删除操作时一定要有确认判断。
     1 int ju = JOptionPane.showConfirmDialog(null, "Do you want to Back", "Tip", JOptionPane.OK_CANCEL_OPTION);
     2 if (ju == 0) {
     3     JOptionPane.showMessageDialog(null, "The interface will Exit.......");
     4     Id_Text.setText("");
     5     Pw_Text.setText("");
     6     Output_Text.setText("");
     7     // 先关闭窗口
     8     wm.dispose();
     9     // 建立新的GUI界面
    10     gui = new GUI();
    11 }


    showConfirmDialog就是用户确认的一个提示。


    添加背景图片
     1 // 建立java的图像界面  background放在了label中
     2 // 文件的路径
     3 // 当文件路径带上src的时候就可以获取本地的文件
     4 ImageIcon image=new ImageIcon("src\signer\time6.jpg");
     5 JLabel logolabel = new JLabel(image);
     6 
     7 logolabel.setBounds(0, 0, image.getIconWidth(), image.getIconHeight());
     8 
     9 
    10 // 设置底层把图片放在最下面的一层
    11 getLayeredPane().add(logolabel,new Integer(Integer.MIN_VALUE));
    12 
    13 //设置内容面板  getContentPane前面添加  这个JFrame的对象 由于这个图片是继承了JFrame  所以不需要对象 或者使用this
    14 JPanel jp = (JPanel) this.getContentPane();
    15 
    16 //设置内容面板未透明  true代表透明  透明之后的gui界面是看不到背景图像的
    17 jp.setOpaque(false);

    上面是添加背景图片的方法。音频还在探索.........。


    二、不继承JFrame
    不继承的JFrame就需要建立对象,JFrame的对象使用的时候和继承的一样但是需要添加【JFrame的对象名】.【组件方式】
    关闭操作的时候【JFrame的对象】.dispose(),就可以了关于窗口关闭的四种方式可以取网上进行查看。其他的内容可以去网上查找资料。


    最后源码在GitHub上面,读者可以自行下下来查看。代码一般,笔者还在努力。
    https://github.com/pzq7025




  • 相关阅读:
    C# 图片与Base64的相互转化
    LeetCode 303. Range Sum Query – Immutable
    LeetCode 300. Longest Increasing Subsequence
    LeetCode 292. Nim Game
    LeetCode 283. Move Zeroes
    LeetCode 279. Perfect Squares
    LeetCode 268. Missing Number
    LeetCode 264. Ugly Number II
    LeetCode 258. Add Digits
    LeetCode 257. Binary Tree Paths
  • 原文地址:https://www.cnblogs.com/future-dream/p/9926605.html
Copyright © 2011-2022 走看看