使用 Swing 将窗格分成两半

Doj*_*ser 1 java swing jpanel layout-manager jtabbedpane

谁能建议我如何将我的分成JTabbedPane两个相等的水平部分?我的窗格中有三个选项卡。我想将第二个选项卡窗格(选项卡 2)分成相等的两半?

选项卡式窗格的代码

import javax.swing.*;
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;

public class Monitor{
  public static void main(String[] args){
  JFrame frame = new JFrame("WELCOME");
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  JTabbedPane tab = new JTabbedPane();
  frame.add(tab, BorderLayout.CENTER);
  JButton button = new JButton("1");
  tab.add("tab1", button);
  button = new JButton("2");
  tab.add("tab2", button);
  button = new JButton("3");
  tab.add("tab3", button);
  frame.setSize(400,400);
  frame.setVisible(true);

  }
}
Run Code Online (Sandbox Code Playgroud)

And*_*son 5

使用单行GridLayout放置JPanel在该选项卡中。里面有两个组件,它们各有一半的空间。例如

在此输入图像描述

import javax.swing.*;
import java.awt.*;

public class Monitor {

    public static void main(String[] args){
        Runnable r = new Runnable() {
            public void run() {
                JFrame frame = new JFrame("WELCOME");
                // A better close operation..
                frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                JTabbedPane tab = new JTabbedPane();
                frame.add(tab, BorderLayout.CENTER);
                JButton button = new JButton("1");
                tab.add("tab1", button);

                // this GridLayout will create a single row of components,
                // with equal space for each component
                JPanel tab2Panel = new JPanel(new GridLayout(1,0));
                button = new JButton("2");
                tab2Panel.add(button);
                tab2Panel.add(new JButton("long name to stretch frame"));
                // add the panel containing two buttons to the tab
                tab.add("tab2", tab2Panel);

                button = new JButton("3");
                tab.add("tab3", button);
                // a better sizing method..
                //frame.setSize(400,400);
                frame.pack();
                frame.setVisible(true);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}
Run Code Online (Sandbox Code Playgroud)