Java的中间容器

在Java的Swing库中,中间容器是指那些用来组织和管理布局中其他组件(如按钮、文本框、标签等)的容器。中间容器不像顶级容器能够独立存在,它们需要被添加到一个顶级容器中。最常用的中间容器包括:

JPanel

JPanel 是最常用的中间容器,它提供了一个空间,可以在其中添加其他组件。JPanel 使用布局管理器来控制其中的组件布局。默认的布局管理器是 FlowLayout,但你可以设置为 GridLayoutBorderLayoutBoxLayout 等其他的布局管理器。

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;

public class PanelExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("JPanel Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 创建 JPanel 并添加按钮
        JPanel panel = new JPanel();
        JButton button1 = new JButton("Button 1");
        JButton button2 = new JButton("Button 2");
        
        panel.add(button1);
        panel.add(button2);

        // 将 JPanel 添加到 JFrame
        frame.add(panel);
        
        frame.pack();
        frame.setVisible(true);
    }
}

JScrollPane

当你有一个组件,如 JListJTableJTextArea 或其他任何组件,且内容超过了显示区域时,JScrollPane 提供了滚动条来滚动查看所有内容。它是容纳大型组件的理想中间容器。

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class ScrollPaneExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("JScrollPane Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JTextArea textArea = new JTextArea(20, 30);
        JScrollPane scrollPane = new JScrollPane(textArea);
        
        frame.add(scrollPane);
        
        frame.pack();
        frame.setVisible(true);
    }
}

JSplitPane

JSplitPane 允许用户通过拖动分隔条来动态调整两个组件的大小。它可以用于创建水平或垂直拆分的界面,这样用户可以根据需要调整布局。

import javax.swing.JFrame;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;

public class SplitPaneExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("JSplitPane Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 创建两个文本区域并放入 JSplitPane
        JTextArea textArea1 = new JTextArea("Text Area 1");
        JTextArea textArea2 = new JTextArea("Text Area 2");
        JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
                                              textArea1, textArea2);
        
        frame.add(splitPane);
        
        frame.pack();
        frame.setVisible(true);
    }
}

JTabbedPane

JTabbedPane 允许用户通过选项卡在多个面板间切换。每个选项卡都可以包含不同的组件,使得界面更加紧凑。

import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.JLabel;

public class TabbedPaneExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("JTabbedPane Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JTabbedPane tabbedPane = new JTabbedPane();
        tabbedPane.addTab("Tab 1", new JLabel("Content of Tab 1"));
        tabbedPane.addTab("Tab 2", new JLabel("Content of Tab 2"));
        
        frame.add(tabbedPane);
        
        frame.pack();
        frame.setVisible(true);
    }
}

Box

Box 是一个容器,它使用 BoxLayout 对象作为其布局管理器。Box 可以创建一条线(水平或垂直),其中的组件可以依次排列。

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;

public class BoxExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Box Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       Box box = Box.createHorizontalBox();
        JButton button1 = new JButton("Button 1");
        JButton button2 = new JButton("Button 2");
        
        box.add(button1);
        box.add(Box.createHorizontalStrut(10)); // 添加间隔
        box.add(button2);

        frame.add(box);
        
        frame.pack();
        frame.setVisible(true);
    }
}

在这个例子中,Box.createHorizontalBox() 创建了一个横向的 Box,组件会水平排列。我们还添加了一个水平间隔,使得按钮之间有一定的空间。

这些中间容器可以相互嵌套,也可以与各种布局管理器一起使用,以创建复杂且具有吸引力的用户界面。正确地使用这些中间容器对于设计一个既美观又功能强大的Swing应用程序至关重要。

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值