单击按钮时JFrame不会打开

0 java swing jframe

我有两个JFrame.

  1. public class Main extends JFrame
  2. public class ColourOption extends JPanel implements ActionListener 然后在JFrame中设置.

当我点击第一个JFrame的按钮
.setVisible()不起作用时,我想打开第二个JFrame .我也试过revalidate(),以及invalidate() ,validate()在第二JFrame中.

它不起作用的原因是什么?

rit*_*t93 6

你必须实例化具有第二帧(显示)的第二类..然后如果你调用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);
    }
}
Run Code Online (Sandbox Code Playgroud)

和第二类:

import javax.swing.*;
import java.awt.*;
class JFrame2 extends JFrame
{
    public JFrame2()
    {
        setLayout(new FlowLayout());
        add(new JLabel("2nd Frame"));
    }
}    
Run Code Online (Sandbox Code Playgroud)

但我仍然建议切换到我之前提到的其他方法:tabbedpanes,cardlayout等..希望我帮助:)