gpt4 book ai didi

java - 使用 ActionListener 更改变量时遇到问题

转载 作者:行者123 更新时间:2023-11-30 02:53:24 25 4
gpt4 key购买 nike

我正在开发 GUI,所有内容都显示正确,但当我按下按钮时,我无法更改变量的值。该变量称为 Passover,它是一个私有(private) int,在 0 参数构造函数中初始化为 1997 的值,我有 3 个按钮需要在按下时更改 Passover 的值。

逾越节代码:

    panel.setBorder(
BorderFactory.createEmptyBorder(0, 0, 0, 0));
panel.setLayout(new BorderLayout(0, 0));

JPanel topPanel = getPanel();
topPanel.setLayout(new GridBagLayout());
topPanel.setBackground(new Color(173, 216, 230));
JLabel moveLabel = getLabel("Move Data");
moveLabel.setFont(new Font("Serif", Font.PLAIN, 20));
addComp(topPanel, moveLabel, 0, 0, 1, 1, 0.5, 0.2,
GridBagConstraints.HORIZONTAL, GridBagConstraints.NORTHEAST);
JLabel passoverLabel = getLabel(" Passover : " + passover);
passoverLabel.setFont(new Font("Serif", Font.PLAIN, 20));
addComp(topPanel, passoverLabel, 1, 0, 1, 1, 0.5, 0.2,
GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER);

按钮代码:

    JPanel bottomRightPanel = getPanel();
bottomRightPanel.setBorder(
BorderFactory.createEmptyBorder(GAP, GAP, GAP, GAP));
bottomRightPanel.setLayout(new GridBagLayout());
bottomRightPanel.setBackground(new Color(255, 105, 180));
JPanel passoverButtonPanel = getPanel();
passoverButtonPanel.setBackground(new Color(255, 105, 180));
passoverButtonPanel.setLayout(new BoxLayout(passoverButtonPanel, BoxLayout.Y_AXIS));
nextPassoverButton = new JButton("Next Passover");
goToPassoverButton = new JButton("Go To Passover: ");
previousPassoverButton = new JButton("Previous Passover");
JLabel filler = getLabel(" ");
goToField = new JTextField(6);
goToField.setPreferredSize(new Dimension(5, 30));


theHandler handler = new theHandler();
nextPassoverButton.addActionListener(handler);
goToPassoverButton.addActionListener(handler);
previousPassoverButton.addActionListener(handler);
goToField.addActionListener(handler);

我希望在按下 nextPassoverButton 时将 Passover 的值提高 1,在按下 previousPassoverButton 时将 Passover 的值降低 1,并在按下 goToPassoverButton 时将其更改为用户输入到 goToField 的值。

我的 ActionListener 类如下所示:

    public class theHandler extends MyDataPalV2 implements ActionListener{

public void actionPerformed(ActionEvent event)
{


if (event.getSource() == goToField)
{
this.passover = Integer.parseInt(String.format("%s", event.getActionCommand()));
}

if (event.getSource() == nextPassoverButton)
{
this.passover++;
}

if (event.getSource() == previousPassoverButton)
{
this.passover--;
}
}
}

该错误是私有(private)访问错误,因此我认为我需要使用 getter 和 setter,但我不知道如何做到这一点。也许有一种完全不同的方法可以做到这一点?

这是我第一次在这里发帖,如果我的帖子中有任何错误,请抱歉。

最佳答案

您不能通过“==”比较两个对象。请改用 .equals(Object)。

if(event.getSource().equals(goToField))

关于java - 使用 ActionListener 更改变量时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37973661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com