java - 单击按钮时 JFrame 未打开

标签 java swing jframe

我有两个JFrame

  1. 公共(public)类 Main 扩展 JFrame
  2. 公共(public)类 ColourOption 扩展 JPanel 实现 ActionListener,然后在 JFrame 中设置它。

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

可能是什么原因导致它不起作用?

最佳答案

您必须实例化具有第二个框架(要显示)的第二个类..然后如果您调用 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"));
    }
}    

但我仍然建议切换到我之前提到的其他方法:选项卡 Pane 、卡片布局等。 希望我有帮助:)

关于java - 单击按钮时 JFrame 未打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9900466/

相关文章:

java - Memcache实现设计

java - 读取 RSS 提要,阅读器在数据结束之前结束

java - Spring security 或 BCrypt 算法哪一种适合帐户这样的项目?

java - SwingWorker get()卡住接口(interface)

java - 当我加载图像列表时仅显示一张图像

java - 使用 JMeter 测试 JSF 应用程序 - ViewState 问题

java - 如何在 Java 中创建要打印到 JFrame 的 JLabel 数组

java - JProgressBar 多次 self 实例化

java - 包含一些 Graphics2D 对象的 JFrame.pack() 会阻止所包含对象的可见性

java - 何时使用 JFrame、JLabel 和 JPanel