gpt4 book ai didi

java - 按下按钮时使其他类框架设置可见(假)

转载 作者:行者123 更新时间:2023-12-02 07:25:09 28 4
gpt4 key购买 nike

我想在按下按钮时使其他类框架设置可见(false)。

有一个名为 DisplayScore 的类,该类获取 getContentPane().add(new ScoreInfo());来自 ScoreInfo 类。分成两个类的原因是因为 DisplayScore 扩展了 JFrame,而 ScoreInfo 扩展了 JPanel。无论如何

在 ScoreInfo 中,按下按钮时我想调用其他框架并关闭 DisplayScore 框架。如果我这样做 this.setVisible(false);,只有面板消失,而由 DisplayScore() 制成的框架仍然存在。

所以..我的问题是如何处理 ScoreInfo 类中的那个?检查底部部分。 actionPerformed 方法。

public class ScoreInfo extends JPanel implements ActionListener
{
JButton btnBack;

public ScoreInfo()
{


JTextArea ta = new JTextArea();
ta.setForeground(Color.white);
ta.setFont(new Font("Serif", Font.ITALIC+Font.BOLD, 16));
ta.setBackground(Color.darkGray);

try
{
ta.read(new FileReader("data/scores4.txt"),null);
}
catch(IOException ioe)
{
System.out.print("ERROR: Could not read file \"");
}


btnBack = new JButton("MAIN");
btnBack.setSize(10,10);
btnBack.setBackground(Color.darkGray);
btnBack.setFont(new Font("Courier New", Font.ITALIC+Font.BOLD, 15));
btnBack.setForeground(Color.black);

JPanel score = new JPanel();
score.setLayout(new BorderLayout());
JButton btnScore = new JButton("H I G H S C O R E");
btnScore.setBackground(Color.BLACK);
btnScore.setFont(new Font("Courier New", Font.ITALIC+Font.BOLD, 48));
btnScore.setForeground(Color.white);

JLabel score_tab = new JLabel(" N A M E " + " S C O R E " + " C O M B O ");
score_tab.setFont(new Font("Courier New", Font.ITALIC+Font.BOLD, 35));


score.add(btnBack, BorderLayout.WEST);
score.add(btnScore, BorderLayout.CENTER);
score.add(score_tab, BorderLayout.SOUTH);

JPanel panel = new JPanel();
panel.setBackground(Color.darkGray);
panel.setPreferredSize(new Dimension(800, 380));
panel.setLayout(new BorderLayout());
panel.add(score, BorderLayout.NORTH);
//panel.add(backpnl, BorderLayout.WEST);
panel.add(ta, BorderLayout.CENTER);

add(panel, score);

btnBack.addActionListener(this);

}

public void actionPerformed(ActionEvent evt){
if(evt.getSource()==btnBack){

//want to make DisplayScore.setVisible(false);
//this.setVisible(false);
MainFrame mf = new MainFrame();
mf.pack();
mf.setSize(640,480);
mf.setLocation(400,0);
mf.setResizable(false);
mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mf.setVisible(true);

}
}

}

最佳答案

你可以:

  • 将父框架的引用传递给面板。我觉得这有点肮脏,但这只是我的想法。
  • 使用SwingUtilities.getWindowAncestor(Component)找到当前组件的父窗口。然后您可以对其调用setVisible

关于java - 按下按钮时使其他类框架设置可见(假),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668049/

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