Java GUI 常用方法总结

前言:

最近做Java SE 实训,需要用GUI实现界面,对于一些不懂得问题,在此做出总结。

(GUI写界面是真的麻烦,还是html+css比较舒服,这里的GUI是用eclipse的windowBuilder插件写的)

1、只关闭JFrame窗口,而不是关闭整个程序。

百度后得出下面结论:

JFrame的关闭不像Frame,点关闭按钮自己会关闭(JFrame是一个框架来的,不只是一个类)。

我们可以通过:setDefaultCloseOperation(int operation); 其中operation有以下几种

  1. DO_NOTHING_ON_CLOSE:不执行任何操作。 
  2. HIDE_ON_CLOSE:自动隐藏该窗体。 
  3. DISPOSE_ON_CLOSE:自动隐藏并释放该窗体。 
  4. EXIT_ON_CLOSE:使用 System.exit(0) 方法退出应用程序。
  5. 默认情况下,该值被设置为 HIDE_ON_CLOSE。

由上可知,只需如下代码,即可实现。

frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);//设置关闭窗口,而不是关闭整个程序

2、关闭窗口时,询问是否确定退出程序。

在JFrame中加入,如下代码:

        //执行退出确认
        this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                exit();
            }
        });

exit方法的代码,如下代码:

    private void exit(){
        Object[] options={"确定","取消"};
        JOptionPane pane = new JOptionPane("确定要退出程序?",
                JOptionPane.QUESTION_MESSAGE,JOptionPane.YES_NO_OPTION,
                null,options,options[1]);
        JDialog dialog=pane.createDialog(this,"警告");
        dialog.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 12));
        dialog.setVisible(true);
        
        if (pane.getValue()==options[0]){
            System.exit(0);//退出程序
        }else {
            this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        }
    }

 

3、除去JButton的边框。

在JButton加入如下代码:

this.setBorderPainted(false);//去掉按钮周围的边框

4、创建提示弹框的方式

JOptionPane.showMessageDialog(null, "用户注册成功");

JOptionPane.showMessageDialog(null, result, "提示",
                            JOptionPane.ERROR_MESSAGE);

5、创建JTable显示数据库中的数据

这里的实例是查找音乐库中的音乐数据,并且显示出来

private void query() {
            String info = inputWordField.getText();
            String[] columnNames = {"id", "歌曲名", "歌手名", "时长"};
            ArrayList queryList = new ArrayList<>();

            queryList.add(new dao.User().queryMusicByName(info));

            Object[][] data = new Object[queryList.size()][columnNames.length];

            for (int i = 0; i < queryList.size(); i++) {
                for (int j = 0; j < columnNames.length; j++) {
                    data[i][0] = queryList.get(i).getId();
                    data[i][1] = queryList.get(i).getName();
                    data[i][2] = queryList.get(i).getSinger();
                    data[i][3] = queryList.get(i).getDuration();
                }
            }

            JTable table = new JTable(data, columnNames);
            table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
            JScrollPane scrollPane = new JScrollPane();//创建滚动组件
            scrollPane.setBounds(0, 0, 484, 381);

            scrollPane.setViewportView(table);
            displayJPanel.add(scrollPane);
            displayJPanel.validate();

        }

6、在特定输入框中,按回车执行函数

这里是执行登陆函数

        passwordField.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                    login();
                }
            }
        });

有待更新

你可能感兴趣的:(Java)