Java JFrame不更新按钮的设置
我目前有一个小问题,Java Jframe和一个按钮没有更新 我正在尝试禁用打印按钮,直到它打开的新JFrame打印完成并且JFrame关闭 该按钮仅在出现新窗口时才会禁用,但在此之前不会禁用,这可能需要一点时间 我通过这样做将按钮设置为禁用:Java JFrame不更新按钮的设置,java,swing,netbeans,jframe,jbutton,Java,Swing,Netbeans,Jframe,Jbutton,我目前有一个小问题,Java Jframe和一个按钮没有更新 我正在尝试禁用打印按钮,直到它打开的新JFrame打印完成并且JFrame关闭 该按钮仅在出现新窗口时才会禁用,但在此之前不会禁用,这可能需要一点时间 我通过这样做将按钮设置为禁用:printbtn.setEnabled(false) 我尝试调用mainPanel.revalidate();mainPanel.repaint();printbtn.revalidate();printbtn.repaint以及他们在其他论坛中建议的上述
printbtn.setEnabled(false)代码>
我尝试调用mainPanel.revalidate();mainPanel.repaint();printbtn.revalidate();printbtn.repaint
以及他们在其他论坛中建议的上述内容的混合
我现在有点不知所措,为什么在新窗口出现之前它不禁用按钮,因为我做的第一件事就是如上所示禁用它,然后通过创建新窗口
谢谢,
Erik最有可能的问题是,释放EDT以允许其重新绘制禁用按钮
一般情况下,它看起来像这样:
PrintBttn.setEnabled(false);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// Code to display the second JFrame goes here
}
};
可能您也没有将第一帧放入EDT,请注意代码,这是您真正想要的吗:
import java.awt.event.*;
import javax.swing.*;
public class TwoFrames
{
private JFrame frame1, frame2;
private JPanel panel1, panel2;
private JButton button1, button2, button3;
private ActionListener action;
public TwoFrames()
{
frame1 = new JFrame("Frame One");
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame2 = new JFrame("Frame Two");
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1 = new JPanel();
action = new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
if (ae.getSource() == button1)
{
// Here goes your code for displaying your Second Frame.
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
if (!frame2.isShowing())
{
panel2 = new JPanel();
button2 = new JButton("Click Me to HIDE FRAME.");
button2.setHorizontalTextPosition(AbstractButton.CENTER);
button2.setVerticalTextPosition(AbstractButton.CENTER);
button2.addActionListener(action);
panel2.add(button2);
panel2.setOpaque(true);
frame2.setContentPane(panel2);
frame2.setSize(200, 200);
frame2.setLocationRelativeTo(null);
frame2.setVisible(true);
}
}
});
button3.setEnabled(false);
}
else if (ae.getSource() == button2)
{
frame2.dispose();
button3.setEnabled(true);
}
}
};
button1 = new JButton("Click Me to Display FRAME.");
button1.setHorizontalTextPosition(AbstractButton.CENTER);
button1.setVerticalTextPosition(AbstractButton.CENTER);
button1.addActionListener(action);
button3 = new JButton("Watch Me getting DISABLED");
button3.setHorizontalTextPosition(AbstractButton.CENTER);
button3.setVerticalTextPosition(AbstractButton.CENTER);
button3.addActionListener(action);
panel1.add(button1);
panel1.add(button3);
panel1.setOpaque(true);
frame1.setContentPane(panel1);
frame1.setSize(200, 200);
frame1.setVisible(true);
}
public static void main(String... args)
{
// Here we are Scheducling a JOB for Event Dispatcher Thread.
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new TwoFrames();
}
});
}
}
请学习java命名约定并遵守它们