Java JTabbedPane,更新其他选项卡JLabel值?

时间:2010-08-23 13:48:40

标签: java swing jlabel jtabbedpane

我有2 JTabbedPane。我无法刷新数据。请帮忙,这是我的代码:

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班。

2 个答案:

答案 0 :(得分: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
}  

您的小组有可能没有重新粉刷。

答案 1 :(得分:0)

可能是一个拼写错误但是 - actionPerformed()您将文本字段的内容存储在userInput中,但使用finalInput更新了pane2。