我遇到了以下代码的问题。我有一个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");
}
}