【发布时间】:2014-08-02 13:30:03
【问题描述】:
我有一个 JLabel,我需要从另一个类中设置它。我们就叫这个 JLabel 汤标签吧。
soupLabel 位于一个名为 SoupPage 的 JPanel 类(类扩展 JPanel)中。 SoupPage 实际上是一个 mainGUI 类的卡片。
我有另一个名为 Confirmation Class 的类(类扩展了 JFrame)。这个类是在汤类中按下按钮后弹出的。
我尝试在确认类中设置文本soupLabel(在汤类中)但无济于事。
主界面
public class mainGUI extends JFrame{
private CardLayout card;
public mainGUI(){
card = new CardLayout();
setLayout(card);
}
private void createSoupPage(){
SoupPage sp = new SoupPage(this);
add(sp, "Soup Page");
}
}
已编辑:弹出确认的 SoupPage
public class SoupPage extends JPanel{
mainGUI gui;
public JLabel soupLabel;
public JButton cfmBtn;
public SoupPage(mainGUI gui){
this.gui = gui;
soupLabel = new JLabel("blabla");
cfmBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Confirmation cfmPopUp = new Confirmation();
}
});
}
}
确认
public class Confirmation extends JDialog{
JButton clrBtn;
public Confirmation(){
SoupPage sp = new SoupPage();
clrBtn = new JButton("Clear");
clrBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
sp.soupLabel.setText("some other text bla bla");
}
});
}
}
这是它不起作用的部分。
【问题讨论】:
-
在您的示例中,文本已经是
"blabla"并再次按下按钮将其设置为"blabla"。你期待什么效果? -
嗯,我的错。这不是布拉布拉。我只是想设置另一个文本。
-
但是您每次使用不同的 SoupPage 时,您认为这会如何影响所有其他实例?
-
如何从现有实例中传递该实例?