继帖子Showing JDialog in taskbar not working和Show JDialog on taskbar我试图在任务栏中显示我的JDialog。虽然它有效,但行为很奇怪,并且看起来不太好。在任务栏上显示JDialog看起来不太好
所以一个按钮出现在任务栏中,但是当我点击它时,一个小窗口出现在我的桌面左上角。该窗口非常小,其内容不可见。当我放大时,我可以看到它是空的。我的JDialog仅在关闭此窗口后出现。
有没有办法摆脱这个窗口或嵌入我的JDialog?
public class SelectionDialog extends JDialog{
private static final long serialVersionUID = 5677381647525913165L;
private int response = JOptionPane.NO_OPTION;
private SelectionFrame frame = null;
public SelectionDialog(String attachmentName, Long processInstance, String processName) {
super(new SelectionFrame("Selection"));
setModalityType(ModalityType.TOOLKIT_MODAL);
setVisible(true);
toFront();
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
response = JOptionPane.showConfirmDialog(this.getParent(), "Would you like to apply the policy attachment " + attachmentName + " to current instance (" + processInstance + ") of process " + processName + " ?", "Confirm",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
}
public void setVisible(boolean visible) {
super.setVisible(visible);
if (!visible) {
((SelectionFrame)getParent()).dispose();
}
}
public int getUserSelection(){
return response;
}
}
帧代码:
public class SelectionFrame extends JFrame{
private static final long serialVersionUID = -9063300247378170855L;
SelectionFrame(String title) {
super(title);
setUndecorated(true);
setVisible(true);
setLocationRelativeTo(null);
}
}
然后,我主要的应用程序内我用这样的:
SelectionDialog dialog = new SelectionDialog(attachmentDAO.getAttachmentName(), inst.getInstanceId(), this._processId);
int response = dialog.getUserSelection();
if (response == JOptionPane.NO_OPTION) {
System.out.println("No button clicked");
} else if (response == JOptionPane.YES_OPTION) {
System.out.println("Yes button clicked");
} else if (response == JOptionPane.CLOSED_OPTION) {
//System.out.println("JOptionPane closed");
}
dialog.setVisible(false);
我还包括图片浏览: ! http://tinypic.com/view.php?pic=mslnyq&s=8#.Uvq17bTpKnc ! http://tinypic.com/view.php?pic=33mlbty&s=8
您应该发布一个[最小,完整,测试和可读的示例](http://stackoverflow.com/help/mcve)以获得更快的帮助 –
按照您的建议,我已经包含了代码和两张图片。 – Peter
我已经设法修复它,但后来我遇到了另一个问题。因此,我创建了一个新的问题http://stackoverflow.com/questions/21727652/jframe-is-not-removed-from-the-taskbar – Peter