Java/Eclipse IDE tại đây.JButtons bên trong JPanels với một GridLayout JFrame
Tôi có một JFrame được đặt thành GridLayout có kích thước NxN. N được người dùng đưa ra như một dòng lệnh ở đầu chương trình. JButtons trong một mẫu NxN được thêm vào cửa sổ trong JPanels, được đặt trong vị trí bởi GridLayout (tôi nghĩ).
Mỗi JButton có cần JPanel riêng của mình để sử dụng GridLayout không? Tôi theo ấn tượng rằng bạn có thể thiết lập chỉ một JPanel cho tất cả các nút và thiết lập JPanel thành GridLayout cho JButtons. Tôi muốn thêm một JPanel khác ở bên trái của mảng nút để hiển thị các nút bấm (JLabel) và nút reset trong cùng một JPanel bên trái.
Dưới đây là (một chút) mã của tôi, trong đó N được đưa ra bởi người sử dụng, hệ thống là nền tảng của tôi xử lý lớp, và ButtonEvent là lớp cho 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);
Và đây là những gì tôi có (N = 4):
Dưới đây là (ước tính) những gì tôi đang tìm kiếm (N = 4):
Tất cả những gì tôi cần/muốn là hai (hoặc nhiều hơn) JPanels được thiết lập gần như trên, và tất cả các trình quản lý bố cục mà tôi đã cố gắng không chơi tốt với JFrame bố cục GridLayout.
Mọi đề xuất về giải pháp tốt hơn đều được mời.
Cảm ơn!
+1 Xem thêm [ví dụ] có liên quan này (http://stackoverflow.com/a/7706684/230513). – trashgod
@trashgod: Cảm ơn bạn đã xóa lỗi lớn đó, vì bây giờ ít nhất nó sẽ chạy, ngay cả khi không cung cấp bất kỳ đối số nào :-). Kiểm tra của tôi trước đây là vô ích, LOL. –
Rất tuyệt! Tôi thích cách này kích thước lại (hoặc, thực sự, không thay đổi kích thước). Bài đăng của trashgod dưới đây giải thích chính xác lý do tại sao chức năng này như vậy. Cảm ơn! – Avertheus