Я устал, но прежде, чем уйти, просто застрял в почти последних трех строках в фрагменте кода ниже, чтобы сделать кнопку «Обновить» на моей панели tictactoe, надеясь уйти с ней, но ожидая ошибок, поскольку он смешивает менеджеров компоновки в одном контейнере.Смешивание gridlayout и borderlayout
Но это РАБОТАЛО.
ButtonPanel.setLayout(new GridLayout(3, 3));
guiFrame.add(ButtonPanel);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
button[i][j] = addButton(ButtonPanel, i, j);
}
}
JButton refreshbutton = new JButton("Refresh");
guiFrame.add(refreshbutton, BorderLayout.SOUTH); // ... border layout worked. Hm.
refreshbutton.addActionListener(this);
guiFrame.setVisible(true); }
Должен ли я быть удивлен? (Имейте в виду, мой newbieness.)
(BOY, я узнал/наткнуться на Buncha материал в письменном виде программы этой глупой игре !!! - например, с помощью setActionCommand
для «метки» на каждую кнопку внутри [ в 11,12,13,21, ... 33] поэтому метод ONE actionPerformed
мог использовать getActionCommand
правильно маркировать [с X или O] кнопка все, что было проталкивается кто Превратим это было.)
Имена переменных не должны начинаться с символа верхнего регистра. 'ButtonPanel' должен быть' buttonPanel'. – camickr
Кроме того, пожалуйста, в дальнейшем обратитесь к разделу «BorderLayout.SOUTH» с 'BorderLayout.PAGE_END', поскольку последний предпочтительнее первого с JDK 1.4 :-) Более подробную информацию можно найти в [BorderLayout Tutorials] (http: // docs. oracle.com/javase/tutorial/uiswing/layout/border.html), чуть ниже кнопки __Launch: -) __ Кроме того, вам не удалось вызвать 'guiFrame.pack()' непосредственно перед тем, как настроить его на видимое и после добавления всех компонентов к нему, что является довольно распространенной ошибкой, которую делают все новички при кодировании в Swing, что во многих случаях приводит к неприятному поведению __ (ТРУДНО СКАЗАТЬ В ЭТОМ МАЛЕНЬКОЙ ПРОСТРАНСТВЕ) __ :-) –