前言:
最近做Java SE 实训,需要用GUI实现界面,对于一些不懂得问题,在此做出总结。
(GUI写界面是真的麻烦,还是html+css比较舒服,这里的GUI是用eclipse的windowBuilder插件写的)
百度后得出下面结论:
JFrame的关闭不像Frame,点关闭按钮自己会关闭(JFrame是一个框架来的,不只是一个类)。
我们可以通过:setDefaultCloseOperation(int operation); 其中operation有以下几种
由上可知,只需如下代码,即可实现。
frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);//设置关闭窗口,而不是关闭整个程序
在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);
}
}
在JButton加入如下代码:
this.setBorderPainted(false);//去掉按钮周围的边框
JOptionPane.showMessageDialog(null, "用户注册成功");
JOptionPane.showMessageDialog(null, result, "提示",
JOptionPane.ERROR_MESSAGE);
这里的实例是查找音乐库中的音乐数据,并且显示出来
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();
}
这里是执行登陆函数
passwordField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
login();
}
}
});
有待更新