2012-07-12 5 views
0

JCheckBox를 실험하고 있습니다. 내가 원하는 것은 체크 박스를 체크 할 때 체크 박스의 텍스트가 jtextarea에 표시되어야한다는 것입니다.jCheckbox가 텍스트 영역에 표시됩니다.

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 

@SuppressWarnings("serial") 
public class CheckboxSample extends JFrame implements ActionListener{ 

    //vars 
    JCheckBox cb1, cb2, cb3, cb4, cb5, cb6; 
    JTextArea ta; 
    String text = ""; 
    JLabel lbl; 

    CheckboxSample(){ 

     Container c = getContentPane(); 
     c.setBackground(Color.BLACK); 
     c.setLayout(new FlowLayout()); 

     ta = new JTextArea(10, 20); 

     //create two check boxes 
     cb1 = new JCheckBox("Java"); 
     cb2 = new JCheckBox("C#"); 
     cb3 = new JCheckBox("VB.Net"); 
     cb4 = new JCheckBox("Python"); 
     cb5 = new JCheckBox("C++"); 
     cb6 = new JCheckBox("Objective-C"); 

     lbl = new JLabel("Choose your favorite programming language/s: "); 

     //add the checkboxes, textarea to the container 
     lbl.setForeground(Color.white); 
     c.add(lbl); 
     c.add(cb1); 
     c.add(cb2); 
     c.add(cb3); 
     c.add(cb4); 
     c.add(cb5); 
     c.add(cb6); 
     c.add(ta); 
     ta.enable(false); 

     //add action listeners. We need not add listener to text area 
     //since the user clicks on the checkboxes or radio buttons only 
     cb1.addActionListener(this); 
     cb2.addActionListener(this); 
     cb3.addActionListener(this); 
     cb4.addActionListener(this); 
     cb5.addActionListener(this); 
     cb6.addActionListener(this); 

     //close the frame upon clicking 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    } 



    @Override 
    public void actionPerformed(ActionEvent e) { 
     // TODO Auto-generated method stub 
     //know which components are selected by user 
     if(cb1.getModel().isSelected()) text+="\nJava"; 
     if(cb2.getModel().isSelected()) text+="\nC#";  
     if(cb3.getModel().isSelected()) text+="\nVB.Net"; 
     if(cb4.getModel().isSelected()) text+="\nPython"; 
     if(cb5.getModel().isSelected()) text+="\nC++"; 
     if(cb6.getModel().isSelected()) text+="\nObjective-C"; 
     //else text+="\nFemale"; 
     //display the selected message in text area 
     ta.setText(text); 

     //reset the message to empty string 
     text=""; 
    } 


    public static void main(String args[]) 
    { 
     //create frame 
     CheckboxSample cr = new CheckboxSample(); 
     cr.setTitle("My Samples"); 
     cr.setSize(500,400); 
     cr.setVisible(true); 
    } 

    } 

내가 어떻게 할 수있는 내 체크 박스의 내용을 연결하지 않고 :

내가 지금있는 것은 이것이다? 감사.

답변

2

그래서,이 권리 읽고 있어요 경우 : 따라서, stateChanged`에 대한

public void actionPerformed(ActionEvent e) { 

    if (e.getSource() instanceof JCheckBox) { 

     JCheckBox checkBox = (JCheckBox)e.getSource(); 
     String text = checkBox.getText(); 

     int pos = ta.getText().getLength() 
     ta.insert(text, pos); 

     // or, more simply 

     ta.append(text); 


    } 

} 
1

ChangeListener을 추가해야합니다. 체크 박스를 클릭 할 때마다 #stateChanged(ChangeEvent)이 호출됩니다.

final JCheckBox cb1 = new JCheckBox("cb Text"); 
final JTextArea textArea = new JTextArea("initial text"); 
cb1.addChangeListener(new ChangeListener() {   
     @Override 
     public void stateChanged(ChangeEvent e) { 
      if(cb1.isSelected()){ 
       //textArea.setText(b.getText()); //to get the text from CheckBox 
       textArea.setText("your Text here"); 
      } 
     } 
}); 
+0

일을()'. 이것은'e.getSource()'를 사용하여 더 일반적으로 만들 수 있습니다. 텍스트 영역의 '문서'는 삭제 여부를 검사 할 수 있습니다. – trashgod