Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何挥杆';什么样的模型有效?_Java_Swing_Components_Positioning_Css - Fatal编程技术网

Java 如何挥杆';什么样的模型有效?

Java 如何挥杆';什么样的模型有效?,java,swing,components,positioning,css,Java,Swing,Components,Positioning,Css,假设我想创建一个简单的计算器。它由3个字段组成。显示结果的文本字段、带复选框的字段和带数字的字段 我应该为每个元素使用什么类型的组件? 如何在窗口中定位元素? 如何在组件内定位元素(即复选框) 这就是我想要达到的目标 我会用 JTextField用于数字窗口 JRadioButton用于单选按钮,以及 按钮的JButton 组件的布局应遵循所谓的布局管理器。(看一看。在这种情况下,GridLayout和/或gridbagloayout就可以了 这段代码应该让您开始: import java.

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

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

这就是我想要达到的目标

我会用

  • JTextField
    用于数字窗口
  • JRadioButton
    用于单选按钮,以及
  • 按钮的
    JButton
组件的布局应遵循所谓的布局管理器。(看一看。在这种情况下,
GridLayout
和/或
gridbagloayout
就可以了

这段代码应该让您开始:

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);
    }
}
import java.awt.*;
导入javax.swing.*;
公共类框架测试{
公共静态void main(字符串[]args){
最终JFrame f=新JFrame(“框架测试”);
JPanel panel=newjpanel(newgridbagloayout());
panel.setBorder(BorderFactory.createEmptyByOrder(5,5,5,5));
GridBagConstraints gbc=新的GridBagConstraints();
gbc.gridx=0;
gbc.fill=GridBagConstraints.HORIZONTAL;
gbc.weightx=1.0;
panel.add(新的JTextField(),gbc);
JPanel numSysPanel=新的JPanel(新的网格布局(1,3));
numSysPanel.setboorder(BorderFactory.createTitledBorder(“数字系统”);
添加(新的JRadioButton(“oct”);
添加(新的JRadioButton(“dec”);
添加(新的JRadioButton(“hex”);
面板。添加(numSysPanel,gbc);
JPanel按钮=新的JPanel(新的网格布局(4,4,2,2));
对于(int i=0;i<16;i++)
添加(新的JButton(“+i”);
面板。添加(按钮,gbc);
f、 设置内容窗格(面板);
f、 包装();
f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f、 setVisible(真);
}
}

首先,您要确定应该使用哪一个字段来排列三个字段。这肯定会满足您的需要,但编程非常困难。您可以尝试使用更简单的,这会使应用程序在调整大小时看起来很奇怪。您也可以使用。
BoxLayout
GridLayout
FlowLayout
不是您想要使用的。现在您有很多选项,可以布置顶级元素

将a用于结果。将a用于复选框,您可以将a
JPanel
放入带有蚀刻边框的复选框中(通过
JPanel.setboorder(BorderFactory.create蚀刻边框())
)和
FlowLayout
。别忘了将复选框放在a中。最后但并非最不重要的是,使用
JPanel
对按钮的
JButton
进行分组。使用a(5行4列)排列这些按钮