Упрощенный: Как сделать строковое значение для вызова конкретного существующего имени переменной JButton в java?
Я пытаюсь сделать необычную игру в крестики-нолики...
В любом случае, то, что я опубликую здесь, на самом деле не является всей концепцией этого. Я просто хочу сделать это простым: у меня есть 9 квадратных jButtons с именами (3 на 3) (и, возможно, разрешить пользователю делать 4x4, 5x5, 10x10 и т. Д. Через настройки в будущем):
[markbox_00_00] / [markbox_00_01] / [markbox_00_02]
[markbox_01_00] / [markbox_01_01] / [markbox_01_02]
[markbox_02_00] / [markbox_02_01] / [markbox_02_02]
[btnSave] / [btnUndoActions]
где первые две цифры обозначают строку, а следующие две — столбец; и кнопку сохранения (btnSave) и кнопку отмены (btnUndoActions).
Каждое поле пометки имеет значение пружины по умолчанию «0», когда я нажимаю, оно становится «1»; и когда я нажимаю "1", он становится "0". Когда вы нажмете кнопку отмены, произойдет сброс до последнего сохранения.
Вот некоторые из моих упрощенных строк кода:
private byte markboxColLimit = 3, markboxRowLimit = 3, row, col;
private byte[][] saveNumber = new byte[markboxRowLimit][markboxColLimit];
private String buttonName;
public Astral_TicTacToe() {
initComponents();
/* I want something like this, but using a for loop based on markboxColLimit and
markboxRowLimit as limits */
markbox_00_00.setText("0");
markbox_00_01.setText("0");
markbox_00_02.setText("0");
markbox_01_00.setText("0");
markbox_01_01.setText("0");
markbox_01_02.setText("0");
markbox_02_00.setText("0");
markbox_02_01.setText("0");
markbox_02_02.setText("0");
/* I know the line below is wrong... what I'm trying is to avoid
* repetitiveness by looping and dynamically calling the variable
* name of JButtons, or in other ways...
*/
/* Attempting to make an alternative code from above (trying to make a loop instead) */ for(row = 0; row < markboxRowLimit; row++){ for(col = 0; col < markboxColLimit; col++){ buttonName = "markbox_0" + Byte.toString(row) + "_0" + Byte.toString(col); buttonName.setText("0"); } }
}
private void btnUndoActionsActionPerformed(java.awt.event.ActionEvent evt) {
markbox_00_00.setText(Byte.toString(saveNumber[0][0]));
markbox_00_01.setText(Byte.toString(saveNumber[0][1]));
markbox_00_02.setText(Byte.toString(saveNumber[0][2]));
markbox_01_00.setText(Byte.toString(saveNumber[1][0]));
markbox_01_01.setText(Byte.toString(saveNumber[1][1]));
markbox_01_02.setText(Byte.toString(saveNumber[1][2]));
markbox_02_00.setText(Byte.toString(saveNumber[2][0]));
markbox_02_01.setText(Byte.toString(saveNumber[2][1]));
markbox_02_02.setText(Byte.toString(saveNumber[2][2]));
}
private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) {
saveNumber[0][0] = Byte.parseByte(markbox_00_00.getText());
saveNumber[0][1] = Byte.parseByte(markbox_00_01.getText());
saveNumber[0][2] = Byte.parseByte(markbox_00_02.getText());
saveNumber[1][0] = Byte.parseByte(markbox_01_00.getText());
saveNumber[1][1] = Byte.parseByte(markbox_01_01.getText());
saveNumber[1][2] = Byte.parseByte(markbox_01_00.getText());
saveNumber[2][0] = Byte.parseByte(markbox_02_00.getText());
saveNumber[2][1] = Byte.parseByte(markbox_02_01.getText());
saveNumber[2][2] = Byte.parseByte(markbox_02_02.getText());
}
private void markbox_00_00ActionPerformed(java.awt.event.ActionEvent evt) {
if("0".equals(markbox_00_00.getText()))
markbox_00_00.setText("1");
else
markbox_00_00.setText("0");
}
private void markbox_00_01ActionPerformed(java.awt.event.ActionEvent evt) {
if("0".equals(markbox_00_01.getText()))
markbox_00_00.setText("1");
else
markbox_00_00.setText("0");
}
....
private void markbox_02_02ActionPerformed(java.awt.event.ActionEvent evt) {
if("0".equals(markbox_00_00.getText()))
markbox_02_02.setText("1");
else
markbox_02_02.setText("0");
}
Вкратце: как я могу сделать String конкретным именем переменной JButton для вызова/доступа/редактирования их свойств?
Пример:
имя_кнопки = markbox_01_02;
имя_кнопки.setText("2");
эквивалентно markbox_01_02.getText("2");
Я очень ценю помощь, спасибо...
P.S. Я использую для создания JFrame в NetBeans Design (просто щелкните и перетащите объекты в окне палитры, такие как JPanel, JButton и т. д., поэтому я не набираю код вручную, а создаю свой собственный логический метод).
@
), как я сделал с вами в 1-м слове этот комментарий :) - person Frakcool   schedule 05.01.2016Map
? - person Jan Jeremy   schedule 06.01.2016