Это проблема, которая меня раздражает уже 3 дня. Мне нужно переписать пользовательский интерфейс маленькой тиктакто (Gomoku of n x n). проблема заключается в том, что когда я создал графический интерфейс swing, я создал новый класс, который наследует свойства JButton и добавляет int для строк и int для столбцов. Я не могу сделать это с помощью SWT (без наследования). есть ли способ добавить значения i и j к кнопке.SWT Button Grid
Вот пример Свинг:
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
final MyJButton button = new MyJButton(i, j);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
MoveResult move = game.move(button.getRow(), button.getCol());
switch (move) {
case ValidMove:
button.setBackground(game.getCurrentPlayer().getColor());
game.changePlayer();
break;
}
}
}
}
}
}
Даю I и J для класса игры, которые дают его к столу CLAS, чтобы проверить ход.
if (table.getElement(x, y) != PieceType.NONE) return MoveResult.InvalidMove;
private PieceType[][] table;
Есть ли способ сделать то же самое в SWT, любое указание приветствуется.
это то, что я сделал
buttonpanel = new Composite(shell, SWT.NONE);
buttonpanel.setLayout(new org.eclipse.swt.layout.GridLayout(cols, true));
buttonTable = new Button[rows][cols];
for (int i = 0; i < rows; ++i){
for (int j = 0; j < cols; ++j) {
gridData.heightHint = 45;
gridData.widthHint = 45;
Button button = new Button(buttonpanel, SWT.PUSH);
button.setLayoutData(gridData);
buttonTable[i][j] = button;
buttonTable[i][j].addSelectionListener(new buttSelectionListener());
// buttonpanel.pack();
}
}
+1 - Мне нравится setData() лучше всего из них. –
@ AndyThomas-Cramer Вы - джентльмен –
Итак, я использовал setData(), дал мне ошибку, что метод move (int, int) в типе Game не применим для аргументов (Object, Object), тогда i использовал (string) cast и parseint, чтобы сделать int, и это дает мне: java.lang.Integer нельзя отнести к java.lang.String –