我正在尝试在Jdialog关闭时设置默认关闭操作。但是,我的进度条代码覆盖了结束事件。我不确定要写一个地方
dialog.setVisible(true); and dialog.setDefaultCloseOperation(HIDE_ON_CLOSE);
语句。
以下是我的init() method
和我的Jdialog
。
请查看并提出建议。
@Override
public void init() {
dialog = new JDialog(new JFrame(), "Progress", true);
dialog.setSize(300, 75);
dialog.setDefaultCloseOperation(HIDE_ON_CLOSE);
}
public void updateProgressBar(final int progress) {
dialog.setAlwaysOnTop(true);
for (i = 0; i <= 100; i = i + 1) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
progressBar.setValue(progress);
dialog.setVisible(true);
}
});
}
if(progressBar.getValue()==100){
dialog.dispose();
System.out.println("File uploaded successfully!");
}
这里没有用的是 - dialog.setDefaultCloseOperation().
为什么它不起作用 - 因为我的dialog.setVisible(true)
方法中有updateProgessBar()
,以显示我的文件上传量的更新进度。
每次进展时,dialog.setVisible becomes true
都会覆盖setDefaultCloseOperation
中写的init() method
。
如果我将login.setVisible(true)存在于我的updateProgressBar()其他地方,则jdialog进度条不会更新并按预期显示。
所以,我的问题是如何在代码中调整这两个语句,这样,我还能够执行默认的关闭操作?
答案 0 :(得分:3)
答案 1 :(得分:0)
处理&#39; X&#39; (以及在Windows上按Alt + F4或关闭任务管理器中的窗口),您可以添加WindowListener
:dialog.addWindowListener(...);
。由于WindowListener
是一个包含许多您可能不需要的方法的界面,因此您也可以使用WindowAdapter
。
我将向您展示两个样本,而不是解释:
dialog.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent arg0) {
}
@Override
public void windowIconified(WindowEvent arg0) {
}
@Override
public void windowDeiconified(WindowEvent arg0) {
}
@Override
public void windowDeactivated(WindowEvent arg0) {
}
@Override
public void windowClosing(WindowEvent arg0) {
//User clicked 'X'
}
@Override
public void windowClosed(WindowEvent arg0) {
//Window is closed, now you can free resources if you need.
}
@Override
public void windowActivated(WindowEvent arg0) {
}
});
第二个样本:
dialog.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent arg0) {
//User clicked 'X'
}
@Override
public void windowClosed(WindowEvent arg0) {
//Window is closed, now you can free resources if you need.
}
});
如您所见,如果您使用WindowAdapter
,则可以选择所需的方法。