我是 java swing 的新手。我已经在下面粘贴了我的代码供您引用,
我正在尝试在 JFrame
中创建 2 个 JRadioButtons
,如果我点击那个 JRadioButton
它
应该为同一 JFrame
中的每个 JRadioButton
显示 5 个 JCheckboxes
。
JRadiobutton
现在正在显示,但是如果我单击那个 JRadioButton
"JCheckboxes"
则不会
显示。请在下面查看我的代码,如果我的代码需要任何更改,请执行
因此,我正在为此奋斗。
MultipleFramesExample.java
在 Mainview.java
类中调用 createMainView()
public class MultipleFramesExample extends JFrame {
public void fun()
{
MainView MV = new MainView();
MV.createMainView();
}
public static void main(String[] args) {
MultipleFramesExample ob=new MultipleFramesExample();
ob.fun();
}
}
Mainview.java
创建Jframe
和Buttons
等。
public class MainView extends JFrame implements ActionListener {
JFrame frame1;
MainView mV=null;
JCheckBox chinButton;
JRadioButton birdButton;
MultipleFramesExample ob=new MultipleFramesExample();
JPanel panel = new JPanel(new BorderLayout());
public void createMainView() {
mV = new MainView();
frame1 = new JFrame();
frame1.setTitle("Main View");
frame1.setSize(50,50);
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setVisible(true);
birdButton = new JRadioButton("click");
frame1.getContentPane().add(birdButton);
birdButton.addActionListener(this);
}
public void actionPerformed(ActionEvent event) {
Container contentPane = frame1.getContentPane();
contentPane.setLayout(new FlowLayout());
JCheckBox jb=new JCheckBox();
if (event.getActionCommand().equals(birdButton)) {
frame1.add(new JCheckBox("JIL1"));
frame1.add(new JCheckBox("JIL2"));
frame1.add(new JCheckBox("JIL3"));
frame1.add(new JCheckBox("JIL4"));
frame1.add(new JCheckBox("JIL5"));
frame1.setVisible(true);
//panel.add(jb, BorderLayout.PAGE_START);
// panel.getComponentCount();
}
}
public void fun1(){
}
}
是否可以像这样创建它们?
最佳答案
更新:这是一个工作示例:
public class MainView extends JFrame implements ActionListener{
JRadioButton radioButton1 = new JRadioButton("Button 1");
JRadioButton radioButton2 = new JRadioButton("Button 2");
JCheckBox checkBox = new JCheckBox("CheckBox");
ButtonGroup buttonGroup = new ButtonGroup();
public MainView() {
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(300, 100);
setLayout(new GridLayout());
buttonGroup.add(radioButton1);
buttonGroup.add(radioButton2);
radioButton1.addActionListener(this);
radioButton2.addActionListener(this);
radioButton2.setSelected(true); // remove to have no button selected
// ActionListener for CheckBox
checkBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO: Your action here
}
});
getContentPane().add(radioButton1);
getContentPane().add(radioButton2);
getContentPane().add(checkBox);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
checkBox.setVisible(radioButton2.isSelected());
}
public static void main(String[] args) {
new MainView();
}
}
原帖
你的代码有一些问题:
- 只要单击按钮,您就会创建新的
JCheckBox
es。如果用户点击它两次,则会创建更多复选框。 - 您尝试添加两个复选框:
frame1.add(new JCheckBox("JIL"));
frame1.getContentPane().add(jb);
尝试以下步骤:
创建并添加测试所需的所有对象(
JRadioButton
、JCheckBox
)并确保它们都显示(如果您检查 Using Layout Managers 和 A Visual Guide to Layout Managers两者都添加但看不到两者)。在您的
ActionListener
中,使用类似checkBox.setVisible(radioButton.isSelected())
的东西根据您的 radioButton 的状态切换您的复选框的可见性.
关于java - 创建 Java Swing - JFrame、JRadioButton、JCheckBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3271567/