gpt4 book ai didi

java - 关闭 JOptionPane 后全屏卡住

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:09 26 4
gpt4 key购买 nike

package sample;

import java.awt.DisplayMode;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class NewClass {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
final JFrame frame = new JFrame();
final JDesktopPane d = new JDesktopPane();
frame.setTitle("Frame");
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
device.setFullScreenWindow(frame);
device.setDisplayMode(new DisplayMode(800, 600, 32, 60));
frame.setVisible(true);

JButton btn = new JButton();
btn.setText("Button");
final JPanel panel = new JPanel();

panel.add(btn);
frame.add(panel);
final JFileChooser chooser = new JFileChooser();
chooser.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals(JFileChooser.APPROVE_SELECTION)) {
System.out.println("File selected: " + chooser.getSelectedFile());
chooser.getFocusCycleRootAncestor().setVisible(false);
} else {
chooser.getFocusCycleRootAncestor().setVisible(false);
}
}
});
btn.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showInternalOptionDialog(frame.getContentPane(), chooser, "Browse", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, new Object[]{}, null);
}
});
}
}

这段代码对你来说看起来很奇怪,但这是使用GraphicsDevice保留全屏的唯一方法。我的问题是,当我单击 JFileChooser 的取消或打开按钮时,我的屏幕会使用此代码 chooser.getFocusCycleRootAncestor().setVisible(false); 卡住。如何使用内部对话框关闭 JOPtionPane,而不卡住屏幕或关闭整个屏幕。

最佳答案

你的问题不在

chooser.getFocusCycleRootAncestor().setVisible(false);

如果您进行这些更改,您的代码将完美运行

只需删除这部分

 JOptionPane.showInternalOptionDialog(frame.getContentPane(),chooser, "Browse",JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, new Object[]{}, null);

并添加此代码

 chooser.showOpenDialog(frame);

如果您还有其他疑问,请告诉我

关于java - 关闭 JOptionPane 后全屏卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14074905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com