2017-12-02 25 views
0

그래서 GUI로 실험하고 있는데 버튼을 누르면 텍스트 값을 변경하고 싶습니다.자바 스윙, 부울에서 텍스트 값 변경

JButton btnAcceleration = new JButton("Acceleration"); 
    btnAcceleration.setBounds(10, 142, 121, 23); 
    btnAcceleration.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      Acceleration = true; 

     } 
    }); 

이 사실 부울을 (한 번 클릭)

JTextField ValueA = new JTextField(); 
    ValueA.setText("Value A"); 
    ValueA.setBounds(490, 141, 66, 22); 
    contentPane.add(ValueA); 
    ValueA.setEditable(false); 
    ValueA.setVisible(false); 

    if (Acceleration) { 
     ValueA.setText("Force"); 
     ValueA.setVisible(true); 
    } 

하게하는 버튼입니다 (참고, 가속은 개인 부울 클래스 내에서 선언) : 여기

아래의 일부 코드가 있어요 그리고 여기에 원하는 코드가 있습니다. GUI를 테스트 할 때 콘솔에서 오류가 발생하지 않지만이 코드는 작동하지 않고 텍스트 필드가 표시되지 않으며 텍스트가 표시 되어도 텍스트가 변경되지 않습니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?

감사

답변

1

귀하의 문제는 마법의 사고 중 하나입니다 (나는 또한 TextEditiable, 같은 결과를 수 있도록 노력했다). GUI 작성시 ValueA 필드를 만들고, 부울이 참인 경우이를 볼 수 있도록하는 코드가 있지만이 코드는 GUI 작성시 한 번만 호출되며 부울이 변경 될 때 마술처럼 다시 호출되지는 않습니다. 이 문제를 해결하려면 리스너가 호출 될 때 ActionListener 코드에 해당 코드를 호출하면됩니다.

ValueA.setText("Force"); 
ValueA.setVisible(true); 

구성 요소의 가시성을 변경하는 경우 정확하게 표시되도록 revalidate()repaint()을 해당 컨테이너에 호출해야합니다.

제쳐두고, Java naming conventions을 배우고 사용하고 싶을 것입니다. 클래스 이름은 대문자로, 변수 이름은 모두 낮은 문자로 시작해야합니다. 이를 학습하고이를 따르면 코드를 더 잘 이해할 수 있으며 다른 사람들의 코드를 더 잘 이해할 수 있습니다.

+0

아, 덕분에 지난 몇 개월 동안 자바를 배우고, 방금 GUI로 약간의 다이빙을하기로 결정했습니다. 피드백 덕분에 – DrStrange02

+0

@ DrStrange02 : 편집을 참조하십시오. –