Я работаю над программой, которая проходит через созданный мной JFrame, и у меня есть несколько проблем с вызовами определенных методов в моем коде. Проблемы, с которыми я запускаю метод, который выводит что-то, основанное на оценке, я продолжаю получать нулевые указатели в тех же местах.Проблемы с JFrame с инструкциями действий и конкретными методами
JButton btnDealCards = new JButton("Deal Cards");
btnDealCards.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayYourHand.setText("");
output = "";
couples = 0;
for (int i = 0; i < hand.length; i++) {
Card1 dealt = dealHand();
if (dealt != null) {
hand[i] = dealt;
displayYourHand.setText(displayYourHand.getText()
+ hand[i].toString() + "\n");
} else {
displayYourHand.setText("NOT ENOUGH CARDS TO DEAL");
status.setText("Shuffle cards to continue");
return;
}
}
// totalHand();
// pairs();
// twoPair();
// threeOfAKind();
}
});
btnDealCards.setBounds(336, 192, 98, 26);
contentPane.add(btnDealCards);
JButton btnShuffleCards = new JButton("Shuffle Cards");
btnShuffleCards.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
shuffle();
displayYourHand.setText("The Deck Has Been Shuffled");
}
});
btnShuffleCards.setBounds(314, 229, 147, 23);
contentPane.add(btnShuffleCards);
}
public void shuffle() {
for (int first = 0; first < deck.length; first++) {
int second = randomNumbers.nextInt(52);
Card1 temp = deck[first];
deck[first] = deck[second];
deck[second] = temp;
}
btnDealCards.setEnabled(true);
}
public Card1 dealHand() {
if (currentCard < deck.length)
return deck[currentCard++];
else {
btnDealCards.setEnabled(false);
return null;
}
}
public void pairs() {
for (int k = 0; k < faces.length; k++)
if (numbers[k] == 2) {
output += "" + ("Pair of " + faces[k] + "'s ");
couples++;
}
status.setText(output);
}
Первый мой ActionListener и actionperformer и следующие три являются действия Я хочу преформы, что выплюнуть nullpointers. Проблемами всегда являются строки после цикла for, такие как «status.setText (output)»; или "btnDealCards.setEnabled (true);". Я думаю, что мне нужно включить эти утверждения в возвращаемые утверждения, но это моя единственная идея. Заранее спасибо!
Что означает затенение переменной? Я попробовал инициализировать btnDealCards для null в локальном методе, а затем попытался изменить его на true/false, но я все равно получаю NPE. Есть ли что-то еще, что я должен инициализировать кнопки? – Sam
@Sam: Пожалуйста, прочтите здесь [переменная тень] (http://en.wikipedia.org/wiki/Variable_shadowing). Не переустанавливайте переменную в null, чтобы попытаться решить ваш NPE - это не имеет никакого смысла. Вы должны инициализировать свои поля тем, что они должны представлять. Переменная JButton инициализируется экземпляром JButton. Пожалуйста, покажите нам как * редактировать исходное сообщение *, где, по вашему мнению, вы инициализируете переменные, которые заставляют ваш код бросать NPE. –
Спасибо, на воздушной подушке, теперь я понимаю, где я объявлял переменные, неправильно вызывающие NPE, спасибо, что позволил мне задать глупые вопросы! – Sam