Tôi là người mới lập trình Java và tôi đang cố gắng tạo một cửa sổ có chứa hai nút và một vùng văn bản, như trong hình bên dưới. Vấn đề tôi gặp phải là định vị các thành phần. Tôi đã thử sử dụng GridLayout
và tách cửa sổ thành 9 hàng và 16 ô, nhưng sau đó tìm thấy tôi không thể tạo thành phần chiếm nhiều hơn một ô. Tôi biết tôi nên sử dụng GridBagLayout
nhưng tôi không biết chính xác như thế nào. Trợ giúp sẽ được đánh giá cao. :)Làm cách nào để định vị các thành phần với GridBagLayout?
6
A
Trả lời
7
Bạn có một số lựa chọn. Thay vì cố gắng bố trí toàn bộ thành phần trong một, hãy thử sử dụng một bố cục hợp chất, trong đó bởi bạn bố trí các phần của giao diện người dùng trong khung riêng biệt và tập trung vào các yêu cầu cá nhân của từng bộ phận ...
public class TestLayout11 {
public static void main(String[] args) {
new TestLayout11();
}
public TestLayout11() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new ExamplePane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
protected class ExamplePane extends JPanel {
public ExamplePane() {
setLayout(new GridBagLayout());
JPanel buttonPane = new JPanel(new GridBagLayout());
JButton btnOkay = new JButton("Ok");
JButton btnCancel = new JButton("Cancel");
JTextArea textArea = new JTextArea(5, 20);
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.anchor = GridBagConstraints.CENTER;
buttonPane.add(btnOkay, gbc);
gbc.gridy++;
gbc.insets = new Insets(50, 0, 0, 0);
buttonPane.add(btnCancel, gbc);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.insets = new Insets(100, 100, 100, 100);
add(buttonPane, gbc);
gbc.insets = new Insets(150, 100, 150, 100);
gbc.gridx++;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.BOTH;
add(new JScrollPane(textArea), gbc);
}
}
}
tất cả JComponents có thể thay đổi kích cỡ với vùng chứa, hoặc không, ei – mKorbel