Tag: jdialog glasspane

JFrame Glasspane也在JDialog上,但不应该

我有一个带有Glasspane的JFrame(未修饰)。 这个框架打开一个JDialog(也是未修饰的,也有一个glassPane)并隐藏自己(setVisible(false))。 Glasspanes使用.setGlassPane()设置。 对话框以Frame为所有者打开。 GlassPane扩展了JPanel并实现了AWTEventListener。 我用它来调整框架和对话框的大小,因此它知道它的父级(框架/对话框) – 这称为“目标”。 GlassPane中的事件处理如下: public void eventDispatched(AWTEvent event) { if (target instanceof JFrame) { e = SwingUtilities.convertMouseEvent( ((MouseEvent) event).getComponent(), (MouseEvent) event, ((JFrame) target).getGlassPane()); } else if (target instanceof JDialog) { e = SwingUtilities.convertMouseEvent( ((MouseEvent) event).getComponent(), (MouseEvent) event, this); } if (e.getID() == MouseEvent.MOUSE_PRESSED) { this.startPos = target.getLocationOnScreen(); } } 在“target.getLocationOnScree”,我得到一个IllegalComponentStateException,当隐藏JFrame并点击JDialog时。 […]