Java 如何挥杆';什么样的模型有效?
假设我想创建一个简单的计算器。它由3个字段组成。显示结果的文本字段、带复选框的字段和带数字的字段 我应该为每个元素使用什么类型的组件? 如何在窗口中定位元素? 如何在组件内定位元素(即复选框) 这就是我想要达到的目标 我会用Java 如何挥杆';什么样的模型有效?,java,swing,components,positioning,css,Java,Swing,Components,Positioning,Css,假设我想创建一个简单的计算器。它由3个字段组成。显示结果的文本字段、带复选框的字段和带数字的字段 我应该为每个元素使用什么类型的组件? 如何在窗口中定位元素? 如何在组件内定位元素(即复选框) 这就是我想要达到的目标 我会用 JTextField用于数字窗口 JRadioButton用于单选按钮,以及 按钮的JButton 组件的布局应遵循所谓的布局管理器。(看一看。在这种情况下,GridLayout和/或gridbagloayout就可以了 这段代码应该让您开始: import java.
用于数字窗口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用于复选框,您可以将aJPanel
放入带有蚀刻边框的复选框中(通过JPanel.setboorder(BorderFactory.create蚀刻边框())
)和FlowLayout
。别忘了将复选框放在a中。最后但并非最不重要的是,使用JPanel
对按钮的JButton
进行分组。使用a(5行4列)排列这些按钮