gpt4 book ai didi

java - 使用静态整数更新 JLabel

转载 作者:行者123 更新时间:2023-12-02 02:37:04 25 4
gpt4 key购买 nike

所以我是 Java 新手,去年我在高中上了一门课,想尝试制作自己正在开发的小型 2D 游戏。我有一个 stats.java,其中填充了我想要存储的所有变量,例如现金、名称、级别等。现在我正在尝试使用按钮将现金添加到我的现金 JLabel。

JButton btnAddCash = new JButton("ADD 10,000");
btnAddCash.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
stats.cash = (stats.cash + 5000);
}
});

JLabel lblCash = new JLabel("Cash: " +stats.cash);
lblCash.setForeground(Color.WHITE);
lblCash.setBounds(10, 649, 162, 14);
contentPane.add(lblCash);
lblCash.setFont(new Font("AirbusMCDUa", Font.BOLD, 15));
JButton debugBtn = new JButton("");

任何帮助都会很棒!

最佳答案

您的问题在 (A) 和 (B) 处

JButton btnAddCash = new JButton("ADD 10,000");
btnAddCash.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
stats.cash = (stats.cash + 5000); // (A)
}
});

JLabel lblCash = new JLabel("Cash: " +stats.cash); // (B)

了解,当您创建 JLabel 时,它保存现金字段的现值,并且不保存对该字段本身的引用。这很重要,因为更新现金字段不会影响 JLabel 的文本。您必须明确更改该文本:

btnAddCash.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
stats.cash = (stats.cash + 5000);
lblCash.setText("Cash: " +stats.cash); // ****** update the text
}
});

其他问题:

  • 再次强调,除非您有充分的理由使用静态,否则请避免使用静态
  • 查找模型- View - Controller 设计模式并研究它。这种类型的结构是您最终想要使用的。
  • 避免组件的绝对定位(空布局和 setBounds),因为这会导致沮丧、悲伤和糟糕的 GUI。使用布局管理器
  • 考虑学习 JavaFX 而不是 Swing,因为 Oracle 积极支持 JavaFX,而 Swing 则不受支持。

关于java - 使用静态整数更新 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46165730/

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