我是摇摆新手,我想问一下如何制作这段代码,所以当按下提交按钮以获取所选复选框并显示其名称时。
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.Border;
public class ACheckBox {
public static void main(String args[]) {
String title = (args.length == 0 ? "CheckBox Sample" : args[0]);
JFrame frame = new JFrame(title);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridLayout(0, 1));
Border border = BorderFactory.createTitledBorder("Pizza Toppings");
panel.setBorder(border);
JCheckBox check = new JCheckBox("Anchovies");
panel.add(check);
check = new JCheckBox("Garlic");
panel.add(check);
check = new JCheckBox("Onions");
panel.add(check);
check = new JCheckBox("Pepperoni");
panel.add(check);
check = new JCheckBox("Spinach");
panel.add(check);
JButton button = new JButton("Submit");
Container contentPane = frame.getContentPane();
contentPane.add(panel, BorderLayout.CENTER);
contentPane.add(button, BorderLayout.SOUTH);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
答案 0 :(得分:4)
您需要定义一个定制的ActionListener
实现,其任务是在触发操作时分析每个JCheckBox
的选定状态;即点击“提交”按钮时。
// ActionListener implementation that maintains a reference to each JCheckBox.
// We will register this listener with the Submit button.
public class MyActionListener implements ActionListener {
private final List<JCheckBox> checkBoxes = new LinkedList<JCheckBox>();
/**
* Adds the specified JCheckBox to the list of JCheckBoxes.
*/
public void addCheckBox(JCheckBox checkBox) {
this.checkBoxes.add(checkBox);
}
/**
* Called when the Submit button is pressed.
*/
public void actionPerformed(ActionEvent evt) {
StringBuilder sb = new StringBuilder();
sb.append("Selected Check Boxes: ");
// Iterate over each JCheckBox and build message ready for display.
// Could do something more sophisticated here if required.
for (JCheckBox checkBox : checkBoxes) {
if (checkBox.isSelected()) {
sb.append(checkBox.getText()).append(' ');
}
}
JOptionPane.showMessageDialog(null, sb);
}
}
// 1. Create ActionListener implementation.
MyActionListener al = new MyActionListener();
// 2. Register JCheckBoxes with ActionListener.
al.addCheckBox(checkBox);
// etc.
// 3. Finally register ActionListener with Submit button.
submitButton.addActionListener(al);
答案 1 :(得分:1)
您需要向按钮添加ActionListener,然后查询复选框的状态。
我建议您阅读Swing Tutorial中的How to Use Buttons, Check Boxes and Radio Buttons。
答案 2 :(得分:1)
如果您不想为每个复选框创建新的Action
(例如,如果动态添加复选框),您可以执行以下操作:
for (Component child: panel.getComponents()) {
if (child instanceof JCheckBox) {
JCheckBox checkBox = (JCheckBox) child;
if (checkBox.isSelected()) {
System.out.println(checkBox.getAction().getValue(Action.NAME));
}
}
}