java - 在同一帧中使用 2 个面板

标签 java swing jbutton layout-manager

我想在同一帧中使用 2 个面板。但是按钮不起作用?我怎么做?我想在一个面板中放置几个​​按钮,而另一个面板会做一些其他的事情。

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); 
    }
}

最佳答案

你有三个问题...

  • 您不是将按钮添加到任何面板,而是添加到框架本身
  • 您在完成创建 UI 之前调用 setVisible。这是众所周知的常见问题。如果您需要在设置可见后向框架添加内容,则需要调用revalidate 以确保布局更新
  • 您类扩展了 JFrame,但是您创建了另一个 JFrame 并使用它的内容 Pane 来添加您的组件,但是创建了您的 TestingPage 可见...

enter image description here

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);
    }
}

关于java - 在同一帧中使用 2 个面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16493063/

相关文章:

java - Headerenricher Spring Integration 和 java dsl

Java 企业架构引用

java - 在 JFrame 上对齐 JButton 和 JLabel

Java GUI 一直挂起

java - 如何使用 GridLayout 从 JFrame 获取组件?

java - 从 JScrollPane 中的 Swing 滚动条中删除箭头

java - Spring @Autowired 字段 - NoSuchBeanDefinitionException

java - 如何创建一个扩展 EnumMap 并调用 super( K.class ) 的通用类 Enum<K> ?

java - 读取txt文件并将所有内容显示为粗体

java - 如何根据用户输入生成JButton?