gpt4 book ai didi

java - Glasspane 不起作用,java

转载 作者:行者123 更新时间:2023-11-30 03:06:42 25 4
gpt4 key购买 nike

我一直在开发一个小型java应用程序,我想在应用程序的根 Pane 的玻璃 Pane 上添加一个等待图形,这里是类:

public class WaitPanel extends JPanel {

public WaitPanel() {
this.setLayout(new BorderLayout());
JLabel label = new JLabel(new ImageIcon("spin.gif"));
this.setLayout(new BorderLayout());
this.add(label, BorderLayout.CENTER);
this.setOpaque(false);

this.setLayout(new GridBagLayout());

this.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
me.consume();
Toolkit.getDefaultToolkit().beep();
}
});
}

public void paintComponent(Graphics g) {
g.setColor(new Color(0, 0, 0, 140));
g.fillRect(0, 0, getWidth(), getHeight());
}}

和主类:

public class NewJFrame extends JFrame {

public NewJFrame() {
JButton button =new JButton("Click");
getContentPane().setLayout(new FlowLayout());
this.getContentPane().add(button);
button.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
getRootPane().setGlassPane(new WaitPanel());
getRootPane().getGlassPane().setVisible(true);
}
});
}

但是当我将按钮操作更改为:

getRootPane().setGlassPane(new WaitPanel());
getRootPane().getGlassPane().setVisible(true);
Scanner sc=new Scanner(System.in);
String s=sc.next();
getRootPane().getGlassPane().setVisible(false);

它不起作用。

最佳答案

您的问题(其中之一)是您的代码使用基于 System.in 的扫描仪卡住了 Swing 事件线程,从而阻止 GUI 更新其图形,包括其玻璃 Pane 。解决方案——不要这样做。如果您想阻止或暂停 GUI,请使用 Swing Timer 或 JOptionPane。

例如,您可以更改

getRootPane().setGlassPane(new WaitPanel());
getRootPane().getGlassPane().setVisible(true);
Scanner sc=new Scanner(System.in);
String s=sc.next();
getRootPane().getGlassPane().setVisible(false);

像这样:

getRootPane().setGlassPane(new WaitPanel());
getRootPane().getGlassPane().setVisible(true);

int delay = 4 * 1000; // 4 second delay
new javax.swing.Timer(delay, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
getRootPane().getGlassPane().setVisible(false);
((javax.swing.Timer) e).stop();
}
}).start();

关于java - Glasspane 不起作用,java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34582939/

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