我有两个JFrame
.
-
public class Main extends JFrame
-
public class ColourOption extends JPanel implements ActionListener
然后将其设置在 JFrame 中。
当我单击第一个 JFrame 的按钮时,我想打开第二个 JFrame
.setVisible()
不管用。我也尝试过revalidate()
, 也invalidate()
, validate()
在第二个 JFrame 中。
它不起作用的原因可能是什么?
您必须实例化具有第二个框架(要显示)的第二个类..然后如果您调用 setVisible(true) ..那么它必须显示..您在做什么..您可以提供按钮的事件处理程序吗..
这不是一个好的做法
所以我个人建议您改用更好的替代方案,例如 JTABBEDPANES 或 CARDLAYOUT
并考虑评论..好的评论伙计们:)..特别是在这种情况下使用JDialog:)
好吧,如果您仍然需要在您的上下文中获得帮助:示例:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class JFrame1 extends JFrame
{
public JFrame1()
{
setLayout(new FlowLayout());
JButton b=new JButton("Click");
add(b);
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
JFrame jf = new JFrame2();
jf.setVisible(true);
jf.setSize(200, 200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
);
}
public static void main(String args[])
{
JFrame jf = new JFrame1();
jf.setVisible(true);
jf.setSize(200, 200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
第二类:
import javax.swing.*;
import java.awt.*;
class JFrame2 extends JFrame
{
public JFrame2()
{
setLayout(new FlowLayout());
add(new JLabel("2nd Frame"));
}
}
但我仍然建议切换到我之前提到的其他方法:选项卡窗格、卡片布局等。
希望我有帮助:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)