当我尝试隐藏或关闭作为模式调用的弹出对话框时,这些组件将按原样消失,但是指示该窗口的模态的灰色屏幕仍然可见,直到在该窗口区域单击第一手鼠标单击事件为止。
WebPopup darkenScreen = new WebPopup(PopupStyle.gray);
ContructPopUP(darkenScreen);
darkenScreen.showPopupAsModal(this);
和弹出设置方法:
private void ContructPopUP(WebPopup darkenScreen)
{
final JFrame mFrame = this;
final WebTextField inputTime = new WebTextField("(sekundy)");
darkenScreen.setLayout(new GridLayout(3, 1));
darkenScreen.add(new WebLabel("Podaj czas : "));
darkenScreen.add(inputTime);
darkenScreen.add(new WebButton(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
int secTime = Integer.parseInt(inputTime.getText());
if (secTime > 0 && secTime < 7200)
{
Connection.TurnOff(secTime);
System.out.println("clicked!");
}
darkenScreen.hidePopup();
}
}));
}
当像普通的弹出窗口一样调用时,一切都会缩进。我已尝试通过多种方式关闭它,但没有一个起作用。
在单击按钮并执行popup.hide之前:
完成后:
假设您使用的是WebLaF库,我认为您的问题可能是由该PopupLayer.hidePopup
方法引起的。该方法由该WebPopup.hidePopup
方法调用,并且应该隐藏模式弹出窗口,但是正如您所注意到的,灰色层不会消失。如果您看一下PopupLayer.hideAllPopups
,将用此方法删除所有弹出窗口,并使弹出层不可见。我没有使用WebLaF库的经验,感觉有点黑,但是您可以通过自己隐藏弹出层来解决问题:
import com.alee.laf.button.WebButton;
import com.alee.laf.label.WebLabel;
import com.alee.laf.text.WebTextField;
import com.alee.managers.popup.PopupStyle;
import com.alee.managers.popup.WebPopup;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class ModalWebPopup {
public static void main(final String[] arguments) {
new ModalWebPopup().launchGui();
}
private void launchGui() {
final JFrame frame = new JFrame("Stack Overflow: modal WebPopup");
frame.setBounds(100, 100, 800, 600);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
final JPanel panel = new JPanel();
final JButton button1 = new JButton("Show a modal WebPopup");
panel.add(button1);
frame.getContentPane().add(panel);
button1.addActionListener(actionEvent -> {
final WebPopup darkenScreen = new WebPopup(PopupStyle.gray);
constructPopup(darkenScreen);
darkenScreen.showPopupAsModal(frame);
});
frame.setVisible(true);
}
private void constructPopup(final WebPopup darkenScreen) {
//final JFrame mFrame = this;
final WebTextField inputTime = new WebTextField("(sekundy)");
darkenScreen.setLayout(new GridLayout(3, 1));
darkenScreen.add(new WebLabel("Podaj czas : "));
darkenScreen.add(inputTime);
darkenScreen.add(new WebButton(actionEvent -> {
int secTime = Integer.parseInt(inputTime.getText());
if (secTime > 0 && secTime < 7200) {
//Connection.TurnOff(secTime);
System.out.println("clicked!");
}
System.out.print("Hide the modal WebPopup ");
// Normal way to hide the popup:
//darkenScreen.hidePopup();
System.out.println("by making the parent of the WebPopup invisible.");
// Alternative way to hide the popup:
darkenScreen.getParent().setVisible(false);
// Compare the PopupLayer.hideAllPopups and PopupLayer.hidePopup methods
// for more details.
}));
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句