通过另一个不起作用的类更新JLabel内容

时间:2014-12-14 12:46:08

标签: java inheritance jlabel updating jcomponent

我遇到了以下代码的问题。我有一个BluePrint类,其中包含一个按钮和一个标签。我有一个Change类,它继承了BluePrint类的所有内容。

我有另一个类NewText,它包含一个 setNewText()方法。我们的想法是通过单击Change类中的按钮,通过使用NewText类更新Change类中的标签内容。但是由于某种原因,setText方法(在setNewText中)似乎不起作用。 另一方面,如果我将Change类中的mouseclick方法更改为以下代码,它似乎可以正常工作。

public void mouseClicked(MouseEvent e) 
        {
            lblTest.setText("Updated");
        }

你们知道原因是什么吗?代码在

之下

BluePrint.java

public class BluePrint {

public JFrame frame;
JLabel lblTest = new JLabel("Test");
JButton btnUpdate = new JButton("Update");
/**
 * @wbp.parser.entryPoint
 */
public void initialize() {
    frame = new JFrame();
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    GroupLayout groupLayout = new GroupLayout(frame.getContentPane());
    groupLayout.setHorizontalGroup(
        groupLayout.createParallelGroup(Alignment.LEADING)
            .addGroup(groupLayout.createSequentialGroup()
                .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
                    .addGroup(groupLayout.createSequentialGroup()
                        .addGap(183)
                        .addComponent(lblTest))
                    .addGroup(groupLayout.createSequentialGroup()
                        .addGap(154)
                        .addComponent(btnUpdate)))
                .addContainerGap(191, Short.MAX_VALUE))
    );
    groupLayout.setVerticalGroup(
        groupLayout.createParallelGroup(Alignment.LEADING)
            .addGroup(groupLayout.createSequentialGroup()
                .addGap(109)
                .addComponent(lblTest)
                .addGap(29)
                .addComponent(btnUpdate)
                .addContainerGap(86, Short.MAX_VALUE))
    );
    frame.getContentPane().setLayout(groupLayout);
}
}

Change.java

public class Change extends BluePrint
{
public static void main (String[] args)
{
    Change obj = new Change();
    obj.create();
}

public void create()
{
    initialize();
    frame.setVisible(true);

    btnUpdate.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) 
        {
            NewText ntObj = new NewText();
            ntObj.setNewText();
        }
    });
}
}

NewText.java

public class NewText 
{
Change cObj = new Change();

public void setNewText()
{
    cObj.lblTest.setText("Updated");
}
}

0 个答案:

没有答案