馈入 JTextfield 的静态变量只是我无法更新的 JTextfield。无法弄清楚为什么,但我认为这是一个范围问题
Static variable being fed into JTextfield is only JTextfield that I am failing to update. Can't figure out why but I think it's a scope issue
我正在开发一个简单的游戏,我的 main 方法在我的 GUI 中 class 并且已经设法解决了 JTextfields 的所有问题,除了一个巧合的是唯一一个被提供静态双精度变量而不是原始字符串的变量。我似乎无法在网上或通过修补找到原因,最后崩溃并决定问我的第一个 Whosebug 问题。
public class BlackJackWindow extends JFrame
{
static double betAmount = 0;
static double money = 100; //The offending variable
static int playerAction = 0;`
这是我正在使用它的那种情况,调用时似乎什么都不做。
public static void main(String[] args)
{
BlackJackWindow gui = new BlackJackWindow();
//Initializing main deck
Deck theDeck = new Deck();
theDeck.newDeck();
theDeck.shuffle();
//Dealing hands
Deck playerHand = new Deck();
Deck dealerHand = new Deck();
money = 100.00;
while(money > 0)
{
gui.moneyField = new JTextField("Money : " + money); //This line
seems to never occur on my GUI, what am I doing wrong?
gui.moneyField.validate();
如有任何帮助,我们将不胜感激!
仅仅创建 JTextField 对象并将其分配给一个变量不会将其放入 GUI,事实上我建议不要尝试以这种方式创建 GUI .请注意,这与静态货币字段无关,而与以错误方式创建 GUI 有关。
您可能想要做的是 获取 当前显示的 JTextField 并使用 money 持有的值设置其文本,但鉴于您的代码量很少,这很难说已经 posted.
此外,这与范围无关,与引用有关。您可能假设设置一个字段,这里 gui.moneyField
将更改显示在 gui GUI 中的 JTextField,而这不是引用的工作方式。
请注意,此答案不完整,因为您的问题和代码不完整,特别是,我们看不到您如何创建 GUI 或您的变量如何与手头的问题相关,这对我们来说都是一个谜。为了获得更好的答案,请 post 一个更好更完整的问题,一个有效的 MCVE 程序 post.
所以不是:
gui.moneyField = new JTextField("Money : " + money); //This line
而是
gui.setMoneyText("Money : " + money);
GUI class 中的方法体可能类似于:
public void setMoneyText(String text) {
moneyField.setText(text);
}
此外,while 循环不属于事件驱动的 GUI 程序,但这是另一个问题的另一个答案的主题。
我正在开发一个简单的游戏,我的 main 方法在我的 GUI 中 class 并且已经设法解决了 JTextfields 的所有问题,除了一个巧合的是唯一一个被提供静态双精度变量而不是原始字符串的变量。我似乎无法在网上或通过修补找到原因,最后崩溃并决定问我的第一个 Whosebug 问题。
public class BlackJackWindow extends JFrame
{
static double betAmount = 0;
static double money = 100; //The offending variable
static int playerAction = 0;`
这是我正在使用它的那种情况,调用时似乎什么都不做。
public static void main(String[] args)
{
BlackJackWindow gui = new BlackJackWindow();
//Initializing main deck
Deck theDeck = new Deck();
theDeck.newDeck();
theDeck.shuffle();
//Dealing hands
Deck playerHand = new Deck();
Deck dealerHand = new Deck();
money = 100.00;
while(money > 0)
{
gui.moneyField = new JTextField("Money : " + money); //This line
seems to never occur on my GUI, what am I doing wrong?
gui.moneyField.validate();
如有任何帮助,我们将不胜感激!
仅仅创建 JTextField 对象并将其分配给一个变量不会将其放入 GUI,事实上我建议不要尝试以这种方式创建 GUI .请注意,这与静态货币字段无关,而与以错误方式创建 GUI 有关。
您可能想要做的是 获取 当前显示的 JTextField 并使用 money 持有的值设置其文本,但鉴于您的代码量很少,这很难说已经 posted.
此外,这与范围无关,与引用有关。您可能假设设置一个字段,这里 gui.moneyField
将更改显示在 gui GUI 中的 JTextField,而这不是引用的工作方式。
请注意,此答案不完整,因为您的问题和代码不完整,特别是,我们看不到您如何创建 GUI 或您的变量如何与手头的问题相关,这对我们来说都是一个谜。为了获得更好的答案,请 post 一个更好更完整的问题,一个有效的 MCVE 程序 post.
所以不是:
gui.moneyField = new JTextField("Money : " + money); //This line
而是
gui.setMoneyText("Money : " + money);
GUI class 中的方法体可能类似于:
public void setMoneyText(String text) {
moneyField.setText(text);
}
此外,while 循环不属于事件驱动的 GUI 程序,但这是另一个问题的另一个答案的主题。