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
   }