Java 从其他选项卡更改JLabel的文本

Java 从其他选项卡更改JLabel的文本,java,swing,nullpointerexception,jlabel,jtabbedpane,Java,Swing,Nullpointerexception,Jlabel,Jtabbedpane,我似乎无法从其他选项卡更改JLabel的文本 例如: 表1有: JLabel headerLbl = new JLabel("Original Title"); headerLbl.setSize(275, 40); headerLbl.setLocation(75, 10); headerLbl.setFont(new Font("Serif", Font.PLAIN, 28)); headerLbl.setForeground(Color.BLUE);

我似乎无法从其他选项卡更改JLabel的文本

例如: 表1有:

    JLabel headerLbl = new JLabel("Original Title");
    headerLbl.setSize(275, 40);
    headerLbl.setLocation(75, 10);
    headerLbl.setFont(new Font("Serif", Font.PLAIN, 28));
    headerLbl.setForeground(Color.BLUE);
    firstPanel.add(headerLbl);
然后,选项卡2将是一个选项选项卡,您可以在其中更改headerLbl的文本。到目前为止,我的代码是:

private void initializeOptionsTab()
  {
    JPanel optionsPanel = new JPanel();
    optionsPanel.setLayout(null);

    JLabel headerLbl = new JLabel("Change Name To:");
    headerLbl.setSize(150, 25);
    headerLbl.setLocation(150, 15);
    optionsPanel.add(headerLbl);

    this.compTxtFld = new JTextField();
    this.compTxtFld.setSize(200, 20);
    this.compTxtFld.setLocation(120, 45);
    optionsPanel.add(this.compTxtFld);

    JButton setNewNameButton = new JButton("Set New Name");
    setNewNameButton.setSize(130, 25);
    setNewNameButton.setLocation(150, 85);
    optionsPanel.add(setNewNameButton);


    setNewNameButton.addActionListener(new ActionListener() 
    { 
        public void actionPerformed(ActionEvent e) 
        { 
            FrameMain.this.setNewNameButtonClick(); 
        }

    });
    this.tabbedPane.addTab("Options", optionsPanel);
  }
那么按钮的代码是:

private void setNewNameButtonClick()
  {
    setTitle(this.compTxtFld.getText());

    headerLbl.setText(this.compTxtFld.getText());
  }
因此,这在线程AWT-EventQueue-0java.lang.NullPointerException中为行提供了一个异常


我猜我无法从选项卡2访问选项卡1中的HeaderBL。我需要做什么才能访问它?

首先,让两个标签都命名为HeaderBL是一个坏主意,即使它们采用不同的方法,因为在编码时可能会造成混淆

我能想到的最简单的解决方案是将headerLbl声明为类变量

所以像这样:

public class FrameMain{
     JLabel headerLbl = new JLabel();
   //The rest is the same

}

然后在第二个方法中,将headerLbl的名称更改为changeNameLbl之类的名称。。。这样它们就不会冲突了

你能发布整个stacktrace吗?例外情况发生在哪里?1为了更快地获得更好的帮助,请发布一个。2始终复制/粘贴错误和异常输出。3选项Panel.setLayoutnull;javagui可能必须在许多平台上工作,在不同的屏幕分辨率上&使用不同的plaf。因此,它们不利于部件的精确放置。要为健壮的GUI组织组件,请使用布局管理器,或者,以及布局填充和边框。这是我得到的:线程AWT-EventQueue-0 java.lang.NullPointerException在FrameMain.setnewnamebutonclickframemain.java:615在FrameMain.access$7FrameMain.java:611在FrameMain$13.actionPerformedFrameMain.java:593在javax.swing.AbstractButton.fireActionPerformedUnknown源代码行615是headerbl.setTextthis.compTxtFld.getText;第611行是私有void SetNewNameButton单击第593行是FrameMain.this.SetNewNameButton单击;在代码中有两个不同的headerBL。我毫不怀疑还有第三个声明为全局的,尚未初始化。