JFrame을 확장하는 클래스가 있으며 두 개의 Jpanel을 상태 표시 줄 JPanel과 contentDisplay 패널 중 하나에 압축합니다.JFrame에 상태 표시 줄을 추가 할 때 발생하는 문제
contentDisplay 패널의 변경 사항을 바탕으로 상태 표시 줄 Jpanel의 레이블 텍스트를 동적으로 변경해야합니다. 이를 위해 다음 코드로 statusbar Panel에 대한 별도의 클래스를 만들었습니다.
public class StatusBar extends JPanel {
JLabel status;
/** Creates a new instance of StatusBar */
public StatusBar() {
super();
status = new JLabel("Ready and Running");
this.add(status);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString(status.getText(), 10,10);
}
public void setMessage(String message) {
status.setText("Status : " + message);
repaint();
}
}
이 클래스의 객체를 생성하여 JFrame에 추가했습니다. 패널이 추가되었지만 프레임의 후속 구현에서 setMessage() 메소드를 호출하면 메시지가 다시 채워지지 않습니다. 즉, 상태 패널이 상태 메시지를 새로 고치지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?
추신 : 상태가 변경 될 때마다 부모 JFrame을 revalidate() 및 repaint()하고 싶지 않습니다. 위 코드와 같이 매번 상태 패널을 새로 고치기 만하면됩니다. 이것을 할 수있는 방법이 있습니까?
아니요 이미 시도해 보았습니다. setText는 JFrame 클래스만으로 호출하지 않기 때문에 작동하지 않습니다. JFrame에서 사용하는 다른 클래스에서 setMessage를 호출해야합니다. 이렇게하면 텍스트는 레이블로 설정되지만 프레임에는 표시되지 않습니다. –
이런 종류의 정보가 당신이 질문했을 때 도움이되었을 것이라고 생각하지 않습니까? 가능한 한 실제 문제에 대한 많은 정보를 제공하도록 질문을 편집하십시오. 귀하의 문제가 더 많은 관련이 있습니다 __how__ 클래스를 사용하여 –
@ Vamsi, 그것은 무엇을 호출하지 않습니다 setMessage 메서드, 이것은 적절한 방법으로 문제를 처리 할 수 있습니다. 이것이 당신을 위해 작동하지 않는다면 당신의 문제는 실제로 당신의 코드의 다른 곳에 있습니다. – jzd