当前位置: 首页 > 知识库问答 >
问题:

在同一框架中使用2个面板

龚德本
2023-03-14

我想在同一框架中使用2个面板。但是button不起作用了?我该怎么做?我想在一个面板上放几个按钮,另一个面板会做一些其他的事情。

public class TestingPage extends JFrame {

    JFrame frame=new JFrame();
    JPanel panel01;
    JPanel panel02;
    JButton bttn1;


    /**
     * @param args
     */
    public TestingPage(){
        super("Test");
        setBounds(700,700,650,500);
        setVisible(true);
        setLayout(new BorderLayout());
        Container cont=frame.getContentPane();

        panel01=new JPanel();
        panel02=new JPanel();
        cont.add(panel01,BorderLayout.EAST);
        cont.add(panel02,BorderLayout.WEST);

    //setLayout(new BorderLayout());

    bttn1=new JButton("Button");
    bttn1.setBounds(77, 75, 100,26);
    add(bttn1);

    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
      Runnable guiCreator= new Runnable(){
      @Override
      public void run  (){
          TestingPage page=new TestingPage();  
      }
     };
    javax.swing.SwingUtilities.invokeLater(guiCreator); 
    }
}

共有1个答案

萧宏峻
2023-03-14

你有三个问题...

  • 不是将按钮添加到任何面板,而是添加到框架本身
  • 在完成UI创建之前调用setvisible。这是众所周知的通病。如果在框架设置为可见后需要将内容添加到框架中,则需要调用revalidate以确保布局已更新
  • 您的类扩展了JFrame,但您创建了另一个JFrame,并使用它的内容窗格将组件添加到其中,但使TestingPage可见...
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TestingPage extends JFrame {

//    JFrame frame = new JFrame();
    JPanel panel01;
    JPanel panel02;
    JButton bttn1;

    public TestingPage() {
        super("Test");
        setBounds(700, 700, 650, 500);
        setLayout(new BorderLayout());
        Container cont = getContentPane();

        panel01 = new JPanel();
        panel02 = new JPanel();
        cont.add(panel01, BorderLayout.EAST);
        cont.add(panel02, BorderLayout.WEST);

        //setLayout(new BorderLayout());

        bttn1 = new JButton("Button");
        panel01.add(bttn1);
        setVisible(true);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Runnable guiCreator = new Runnable() {
            @Override
            public void run() {
                TestingPage page = new TestingPage();
            }
        };
        javax.swing.SwingUtilities.invokeLater(guiCreator);
    }
}
 类似资料:
  • 问题内容: 我的javaswing应用程序中大约有3帧。如何处理这些框架的正确方法是什么?我的意思是某种模式或其他。现在,我总是有一个代表框架的类,一个代表面板的框架,这是该框架中的主要类。现在我已将帧定义为静态变量,当我想隐藏它们时,我称 这是正确的解决方案吗? 问题答案: 除了一个或多个实例的(出色)建议之外,还有一些其他策略可能会单独或组合使用,以将各种内容窗格折叠到一个框架中。 / (Tu

  • 我希望提供两种不同的序列化程序,同时又能够从的所有功能中获益: 当查看对象列表时,我希望每个对象都有一个重定向到其详细信息的url,并且使用目标模型的显示所有其他关系; 示例: 查看对象的详细信息时,我希望使用默认的 示例: 我设法通过以下方式使这一切如我所愿发挥作用: serializers.py views.py 基本上,我会检测用户何时请求列表视图或详细视图,并根据需要更改。我对这段代码并不

  • 2.1 Scrapy框架的命令介绍 Scrapy 命令 分为两种:全局命令 和 项目命令。 全局命令:在哪里都能使用。 项目命令:必须在爬虫项目里面才能使用。 全局命令 C:\Users\AOBO>scrapy -h Scrapy 1.2.1 - no active project 使用格式: scrapy <command> [options] [args] 可用的命令: bench

  • EasyWeChat 是一个通用的 Composer 包,所以不需要对框架单独做修改,只要支持 Composer 就能直接使用,当然了,为了更方便的使用,我们收集了以下框架单独提供的拓展包: Laravel overtrue/laravel-wechat Symfony lilocon/WechatBundle Yii jianyan74/yii2-easy-wechat 适用于 EasyWeCh

  • QueryList无框架依赖,可以灵活的嵌入到任何项目中去。 在使用Composer管理的项目中安装 在非Composer管理的项目中安装 QueryList可以集成到任何框架中去使用,无需做任何修改,直接使用Composer安装到项目中去即可。 在使用Composer管理的项目中安装 如果项目框架本身就是使用Composer来管理包的话,直接在项目根目录执行Composer安装命令后,即可在项目

  • 问题内容: 我想提供两个不同的序列化器,但仍然可以从以下所有功能中受益: 当查看对象列表时,我希望每个对象都有一个重定向到其详细信息的url,并使用目标模型来显示其他所有关系。 例: 查看对象的详细信息时,我想使用默认值 例: 我设法按照以下方式完成了所有这些工作: serializers.py views.py 基本上,我会检测用户何时请求列表视图或详细视图,并进行更改以满足我的需求。不过,我对