java - Swing 的 BoxModel 是如何工作的?

标签 java swing components positioning css

假设我想创建一个简单的计算器。它由 3 个字段组成。用于显示结果的文本字段,带有用于选择系统的复选框的字段和带有数字的字段。

我应该为每个元素使用什么样的组件? 如何在我的窗口中定位元素? 如何定位组件内的元素(即复选框)?

这就是我要实现的目标。

http://img28.imageshack.us/img28/7691/lab8c.jpg

最佳答案

我会用

  • JTextField 用于数字窗口
  • JRadioButton 用于单选按钮,以及
  • JButton 用于按钮。

组件的布局应该交给所谓的布局管理器。 (看看 Using Layout Managers。在这种情况下,GridLayout 和/或 GridBagLayout 就可以了。

这段代码应该让你开始:

import java.awt.*;

import javax.swing.*;


public class FrameTest {

    public static void main(String[] args) {
        final JFrame f = new JFrame("Frame Test");

        JPanel panel = new JPanel(new GridBagLayout());
        panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.fill = GridBagConstraints.HORIZONTAL;
        gbc.weightx = 1.0;
        panel.add(new JTextField(), gbc);


        JPanel numSysPanel = new JPanel(new GridLayout(1, 3));
        numSysPanel.setBorder(BorderFactory.createTitledBorder("Number System"));
        numSysPanel.add(new JRadioButton("oct"));
        numSysPanel.add(new JRadioButton("dec"));
        numSysPanel.add(new JRadioButton("hex"));
        panel.add(numSysPanel, gbc);

        JPanel buttons = new JPanel(new GridLayout(4, 4, 2, 2));
        for (int i = 0; i < 16; i++)
            buttons.add(new JButton("" + i));
        panel.add(buttons, gbc);

        f.setContentPane(panel);
        f.pack();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}

enter image description here

关于java - Swing 的 BoxModel 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2797516/

相关文章:

java - Java 中的多重分割

java - JTable扩展后无法向下滚动?

java - 为什么我需要将鼠标悬停在按钮上才能显示?

java - 使用 swing 菜单和 menuitem 对象调用类

c# - 我怎么能代表一系列事件,比如谷歌日历?

javascript - 在 ReactJS 中操作类名和处理点击的更好方法

java - 如何开发(本地)和部署Storm Topology(远程)?

java - jqassistant 报告生成失败,Maven 站点

Java初始化对象

安卓。如何使用 XML 属性调整自定义组件的高度和宽度?