Я делаю программу сохранения stat, чтобы практиковать свои навыки графического интерфейса пользователя на Java.Ввод JButtons в стек
У меня есть программа, которая записывает статистику баскетболистов, нажимая JButton под их именем. Затем он добавляет статистику к текущему итогу и обновляет табло.
Настало время для меня, чтобы создать кнопку отмены.
Таким образом, каждый раз, когда действие выполняется, я добавляю кнопку источника в стек JButtons. Существуют некоторое литье участвует, так что в конце концов, как это:
JButton source = (JButton) e.getSource();
theStack.push(source);
Позже, в методе actionPerformed
я пытаюсь позвонить по функции отмены:
if(source.getText().equals("Undo")){
System.out.println("Undo");
JButton last = this.theStack.pop();
System.out.println(last.getText()); //Works fine.
System.out.println(last.getName()); //Produces a null value.
int player = Integer.parseInt(last.getName().trim());
undo(player, last.getText(), activePlayers);
}
Почему я получаю нуль для имя. Eclipse бросает исключение, когда пытается преобразовать имя в int
, потому что оно преобразует нулевое значение. Я использую .getName()
в других частях actionPerformed
, но не здесь?
Мое имя, код настройки, сделано много раз в цикле for.
output[i][j] = new JButton("Make Two Points");
output[i][j].setName(i + "");
Проблема в простейшей форме.
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
ArrayList<Integer> activePlayers = new ArrayList<Integer>();
activePlayers.add(player0Select.getSelectedIndex());
activePlayers.add(player1Select.getSelectedIndex());
activePlayers.add(player2Select.getSelectedIndex());
activePlayers.add(player3Select.getSelectedIndex());
activePlayers.add(player4Select.getSelectedIndex());
JButton source = (JButton) e.getSource();
theStack.push(source);
if(source.getText().equals("Make Two Points")){
this.makeTwoPoints(source.getName(), activePlayers); //source.getName() works here.
System.out.println("Two Points");
}
if(source.getText().equals("Undo")){
System.out.println("Undo");
JButton last = this.theStack.pop();
System.out.println(last.getText());
System.out.println(last.getName()); //last.getName() produces null here.
int player = Integer.parseInt(last.getName().trim());
undo(player, last.getText(), activePlayers);
}
}
Я установил их, когда я их сгенерировал, имя соответствует номеру столбца, который он привязывает к активному игроку в моей программе. –
@TrevorHutto: JVM говорит вам иначе, и я верю в JVM. Пожалуйста, покажите свой код настройки. –
@TrevorHutto: вам нужно будет создать и опубликовать тестовый [mcve] (http://stackoverflow.com/help/mcve), чтобы мы могли полностью понять вашу проблему. –