Java 如果在另一个JPanel中执行某些操作,如何更新JPanel的组件?
如果在另一个Java 如果在另一个JPanel中执行某些操作,如何更新JPanel的组件?,java,swing,Java,Swing,如果在另一个JPanel中执行了某些操作,我想更新一个JPanel 示例: 带有BorderLayout的JPanel包含以下内容: 1.)类LabelPanel,它扩展了JPanel,并包含一个显示值的JLabel 2.)类ButtonPanel,它扩展了JPanel,并包含一个JButton 如果用户单击JButton,则JLabel的值应增加50 JLabel应该由收听JButton的ActionListener调用。你怎么能这么做 主面板: public class MainPanel
JPanel
中执行了某些操作,我想更新一个JPanel
示例:带有
BorderLayout
的JPanel
包含以下内容:
1.)类LabelPanel
,它扩展了JPanel
,并包含一个显示值的JLabel
2.)类ButtonPanel
,它扩展了JPanel
,并包含一个JButton
如果用户单击JButton
,则JLabel
的值应增加50
JLabel
应该由收听JButton的ActionListener
调用。你怎么能这么做
主面板:
public class MainPanel extends JPanel {
public MainPanel() {
this.setLayout(new BorderLayout());
this.add(new LabelPanel());
this.add(new ButtonPanel());
}
}
标签面板:
public class LabelPanel extends JPanel {
public LabelPanel() {
this.add(new JLabel("Value: " + 0));
}
}
按钮面板:
public class ButtonPanel extends JPanel {
public ButtonPanel() {
this.add(new JButton());
}
}
答案并不难。假设您的JButton
被称为按钮
,您的JLabel
被称为标签
,您可以这样做:
button.addActionListener((ActionEvent e) -> // register ActionListener
{
int value = Integer.parseInt(label.getText()); // get current value of the label
value += 50; // increase value by 50
label.setText(Integer.toString(value)); // update text of the label
});
您需要以下内容:
私有文本字段tfCount;//声明组件文本字段
专用按钮btnCount;//声明组件按钮
私有整数计数=0;//计数器值
绝对没有什么能阻止你这么做。将ActionListener添加到按钮,并让它更新标签。不管它是否在另一个小组里都无关紧要。谢谢。我更新了我的问题,以便更好地反映我的问题。JPanel位于单独的类文件中。
btnCount = new Button("Count"); // allocate Button instance
add(btnCount); // "this" Frame adds btnCount
btnCount.addActionListener(this);
// ActionEvent handler - Called back when the button has been clicked.
@Override
public void actionPerformed(ActionEvent evt) {
count = Integer.parseInt(tfInput.getText());
count += 50; // incrase the counter value
tfCount.setText(count + ""); // display on the TextField
// setText() takes a String
}