我是Java新手。
我开发了一个具有不同JPanels
的应用程序(在这种情况下使用BorderLayout
,3个面板)。
在面板1中,我有一个JLabel和一个与其值相关的变量(一个类)(方法get); 在面板2中,我更新了变量(方法集)的值,因为它是在第二个面板中执行操作时完成的。
如何更新面板1中JLabel的值?
在更新面板2中的值以及如何让面板1收听此更改后,我不知道如何触发事件或类似事件。
让我再解释一下。我有一个带有两个JPanel的JFrame,我从一个面板更新模型。更新模型后,应更新其他JPanel的JLabel: 主要:JFrame
public class MainClass extends JFrame
{
public MainClass()
{
// JPanel 1
....
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,300);
setLocationRelativeTo(null);
setTitle("Test");
setResizable(false);
setVisible(true);
// JPanel 1
this.add(west, BorderLayout.WEST);
// JPanel 2
this.add(board, BorderLayout.CENTER);
}
public static void main(String[] args)
{
// put your code here
new MainClass ();
}
}
JPanel 1
public class West extends JPanel
{
contFase = new Contador(titulo, valor);
JLabel lblTitulo;
...
lblTitulo.setText = contFase.getText();
this.add(lblTitulo);
...
}
JPanel 2
public class Board extends JPanel implements ActionListener
{
....
public void actionPerformed(ActionEvent e)
{
...
//Here Label of panel 1 should be updated with the model
contFase.setValor(contFase.getValor() + pacman.comerElemento(fase.getPacdots(), fase.getPowerPellets()));
...
}
}
答案 0 :(得分:0)
我不知道您的代码是如何显示的,因为您没有显示任何代码,但这里有一个示例,说明如何在执行操作时编辑JLabel
(在这种情况下 - 按下按钮)。面板上组件的布局无关紧要,但我放了两个你想要的面板。
public class ValueUpdate extends JFrame {
int x = 0;
final JLabel label = new JLabel(String.valueOf(x));
ValueUpdate() {
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
panel1.add(label);
JButton btn = new JButton("Increment");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
x++;
label.setText(String.valueOf(x));
}
});
panel2.add(btn);
getContentPane().add(panel1, BorderLayout.CENTER);
getContentPane().add(panel2, BorderLayout.PAGE_END);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String[] args) {
new ValueUpdate();
}
}