2010-08-23 3 views
2

J'ai 2 JTabbedPane. Je suis incapable d'actualiser les données. PLease aider, voici mon code:Java JTabbedPane, mettre à jour les autres onglets JLabel value?

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

Voici ma classe principale:

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

Les labelUser jamais mises à jour, mais je Trace la fonction updateData, elle s'appelle. Pourquoi le texte dans labelUser n'est pas mis à jour?

EDIT:

"labelUser" viennent de pane2.java classe.

+1

Veuillez mettre le code correctement en retrait (utilisez quatre espaces pour indiquer au site "c'est du code")! –

+0

@Aaron, pourquoi tu ne peux pas faire ça? – jjnguy

+0

Je ne vois pas d'où provient labelUser. Le widget est-il visible du tout? –

Répondre

1

Remarque: Apparemment, cela n'a pas résolu le problème.

Une chose à essayer serait:

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 
} 

Il y a une chance que votre panneau est tout simplement pas se repeindre.

+0

'setText()' devrait forcer un repaint finalement: -/ –

+0

@Aaron, ouais. Je connais. Mais, c'était tout ce que je pouvais penser ... – jjnguy

+0

Son ne fonctionne pas, d'autres idées? –

0

est peut-être une faute de frappe, mais - dans actionPerformed() vous stockez le contenu du champ de texte dans userInput mais utilisez finalInput de mettre à jour pane2.

+0

Ce n'est pas faute de frappe En cas de faute de frappe, je ne vais pas passer par le compilateur, je vais modifier la question, changer le finalInout en userInput –

Questions connexes