2010-08-23 2 views
2

나는 2 JTabbedPane입니다. 데이터를 새로 고칠 수 없습니다. 여기에 내 코드입니다, 제발 도와주세요 :자바 JTabbedPane, 다른 탭 업데이트 JLabel 값?

pane1 :

//.. some codes... 
// This is the ButtonListener 
private class ButtonListener implements ActionListener 
{ 
    public void actionPerformed (ActionEvent event) 
    { 
     userInput = tf.getText(); // tf is JTextField 
     //System.out.println("the input is "+ finalInput); 
     pane2.updateData(userInput); 
    } 
} 

pane2 : 여기

public void updateData(String s){ 
    System.out.println("Update data function is called"); 
    labelUser.setFont(new Font("Arial", Font.BOLD, 30)); 
    labelUser.setText("Updated text here " + s); 
} 

내 메인 클래스 :

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

public class Main { 
public static Pane2 p2 = new Pane2(); 
    public static void main(String[] args) { 

     JFrame f= new JFrame ("My Frame"); 
     f.setDefaultCloseOperation (JFrame .EXIT_ON_CLOSE); 

     JTabbedPane tp = new JTabbedPane(); 
     p2 = new Pane2(); 

     tp.addTab("Pane1", new PaneFirst(p2)); 
     tp.addTab("Pane2", new PaneSecond()); 

     f.add(tp); 
     f.pack(); 
     f.setVisible(true); 
    } 
} 

labelUser 결코 업데이트,하지만 난 함수를 호출하면 updateData 함수가 호출됩니다. labelUser의 텍스트가 업데이트되지 않는 이유는 무엇입니까?

편집 :

"labelUser는"pane2.java 클래스에서 제공됩니다.

+1

코드를 올바르게 들여 씁니다 (사이트에 "this is code"라고 말하기 위해 4 칸을 사용하십시오)! –

+0

@Aaron, 왜 그렇게 할 수 없습니까? – jjnguy

+0

labelUser의 출처가 보이지 않습니다. 위젯이 전혀 보이지 않습니까? –

답변

1

참고 : 분명히이 문제가 해결되지 않았습니다. 시도

한 가지는 것 : 당신의 패널 그냥 다시 그려지고 있지 않은지 기회가있다

public void updateData(String s){ 
    System.out.println("Update data function is called"); 
    labelUser.setFont(new Font("Arial", Font.BOLD, 30)); 
    labelUser.setText("Updated text here " + s); 
    repaint(); // add this line to tell your pane to repaint itself 
} 

.

+0

'setText()'는 다시 페인트를 강제해야합니다. -/ –

+0

@Aaron, 예. 알아. 그러나, 내가 생각할 수있는 전부였습니다 ... – jjnguy

+0

그것의 작동하지 않는, 다른 어떤 아이디어? –

0

오타 일 수도 있지만 actionPerformed()에 텍스트 필드의 내용을 userInput에 저장하고 finalInput을 사용하여 pane2를 업데이트하십시오.

+0

그것의 오타가 없습니다. typo 경우 컴파일러를 거치지 않고 질문을 편집하고 finalInout을 userInput으로 변경합니다. –