У меня есть один JFrame, для которого задан GridLayout размером NxN. N задается пользователем в виде командной строки при запуске программы. JButtons в шаблоне NxN добавляются к окну в JPanels, установленном в GridLayout (я думаю ).
Нужна ли каждой кнопке JButton собственная панель JPanel для использования GridLayout? У меня сложилось впечатление, что вы можете настроить только одну JPanel для всех кнопок и установить JPanel в GridLayout для JButtons. Я хочу добавить еще одну JPanel слева от массива кнопок для отображения нажатий кнопок (JLabel )и кнопку сброса в той же левой панели JPanel.
Вот (немного )моего кода, где N задается пользователем, system — класс фоновых процессов, а ButtonEvent — класс для ActionListener/actionPerformed:
JFrame window = new JFrame("");
GridLayout layout = new GridLayout(N,N);
window.setLayout(layout);
for (int row = 0; row < N; row++){
for (int col = 0; col < N; col++){
JPanel panel = new JPanel();
JButton b = new JButton ("("+row+","+col+")");
window.add(b).setLocation(row, col);
panel.add(b);
b.addActionListener(new ButtonEvent(b, system, row, col));
window.add(panel);
}
}
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.pack();
window.setVisible(true);
Вот что у меня есть (N=4):
Вот (приблизительно )то, что я ищу (N=4):
Все, что мне нужно, это две (или более )JPanel, которые настроен примерно так, как указано выше, и все менеджеры компоновки, которые я пробовал, плохо работают с макетом JFrame GridLayout.