2010-02-09 16 views
0

나는 스윙이 처음이다. 나는 어떻게이 코드를 만들 수 있는가를 물어보고 싶다. 제출 버튼을 눌러 선택된 체크 박스를 만들고 이름을 표시하면된다.체크 박스

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); 
    } 
} 

답변

4

당신은 그 일 각 JCheckBox 년대에게 액션이 해고 선택된 상태를 분석하는 맞춤형 ActionListener 구현을 정의해야합니다; 즉, "제출"버튼이 클릭되었을 때.

// 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

당신은 (확인란이 동적으로 추가하는 예를 들어, 경우) 이런 식으로 뭔가 할 수있는 모든 체크 박스 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)); 
      } 
     } 
    }