【发布时间】:2014-03-31 07:59:23
【问题描述】:
所以我尝试创建一系列显示如下的单选按钮和复选框:
Radio Button
Check Box
Radio Button
Check Box
Radio Button
但是,我仍在学习 java 的过程中,我想知道是否有人可以解决这个问题。目前按钮和框显示在正确的位置,但是由于某种原因没有显示第一个单选按钮(“时间”)。如果您能描述原因和可能的解决方案,那就太好了。
谢谢
更新代码:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class Question2 {
public static void main(String[] args) {
MyFrame f = new MyFrame("Font Chooser");
f.init();
}
}
class MyFrame extends JFrame {
MyFrame(String title) {
super(title);
}
private JPanel mainPanel;
private GridBagConstraints gbc = new GridBagConstraints();
private GridBagLayout gbLayout = new GridBagLayout();
void init() {
mainPanel = new JPanel();
mainPanel.setLayout(gbLayout);
mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 20, 10, 20));
this.setContentPane(mainPanel);
gbc.gridx = 0;
gbc.gridy = 1;
JCheckBox cb = new JCheckBox("Bold");
gbLayout.setConstraints(cb, gbc);
mainPanel.add(cb);
gbc.gridy = 3;
gbLayout.setConstraints(cb, gbc);
cb = new JCheckBox("Italic");
mainPanel.add(cb);
gbc.gridx = 1;
gbc.gridy = 0;
JRadioButton rb = new JRadioButton("Times");
gbLayout.setConstraints(rb, gbc);
mainPanel.add(rb, gbc);
gbc.gridy = 2;
gbLayout.setConstraints(rb, gbc);
rb = new JRadioButton("Helvatica");
mainPanel.add(rb, gbc);
gbc.gridy = 4;
gbLayout.setConstraints(rb, gbc);
rb = new JRadioButton("Courier");
mainPanel.add(rb, gbc);
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
【问题讨论】:
-
你的代码的当前输出是什么?你得到的东西接近你想要的吗?
-
目前“Helvatica”和“Times”单选按钮直接在彼此之上输出。复选框没问题,只是单选按钮搞砸了。
-
您是希望将它们显示在交错列中,还是仅显示在两个平行列中?
标签: java user-interface checkbox radio-button gridbaglayout