Bắt đầu bằng cách thêm các nút vào vùng chứa của riêng chúng, bằng cách này, bạn có thể kiểm soát bố cục của các nút riêng biệt với phần còn lại của giao diện người dùng
JPanel panelFullOfButtons = new JPanel();
try {
for (int i = 0; i < projectNames.length; i++) {
buttons[i] = new ProjectButton(projectNames[i]);
buttons[i].setId(uniqueIds[i]);
panelFullOfButtons.add(buttons[i]);
buttons[i].addActionListener(this);
}
} catch (Exception e2) {
JOptionPane.showMessageDialog(null, e2);
}
Sau đó, thêm bảng "chính" vào NORTH
vị trí của khung và bảng "nút" đến CENTER
frame.add(panel, BorderLayout.NORTH);
frame.add(new JScrollPane(panelFullOfButtons), BorderLayout.CENTER);
Xin lưu ý bạn, trong trường hợp này, tôi rất muốn sử dụng một thứ gì đó giống như JList
thay vì. Xem Cách sử dụng danh sách
để biết thêm chi tiết
// Problem #1...
JScrollPane pane = new JScrollPane();
pane.add(buttonPanel);
//...
// Problem #2...
panel.add(pane);
frame.add(panel);
Những thứ này đang cạnh tranh với nhau, di chuyển nội dung xung quanh và chồng chéo với nội dung hiện có ...
public AdminClass() {
panel.setLayout(new GridLayout(3, 1));
panel.add(new JLabel("Welcome to Admin Panel"));
btnNewButton.addActionListener(this);
panel.add(btnNewButton);
panel.add(new JLabel("Existing Projects"));
List<String> projectNameList = new ArrayList<String>();
for (int index = 0; index < 1000; index++) {
projectNameList.add("Project " + index);
}
projectNames = projectNameList.toArray(new String[0]);
// Adding buttons to the project
buttons = new JButton[projectNameList.size()];
try {
for (int i = 0; i < projectNames.length; i++) {
buttons[i] = new JButton(projectNames[i]);
btnPnl1.add(buttons[i]);
buttons[i].addActionListener(this);
}
} catch (Exception e2) {
JOptionPane.showMessageDialog(null, e2);
}
frame.add(panel, BorderLayout.NORTH);
frame.add(new JScrollPane(btnPnl1), BorderLayout.CENTER);
frame.setVisible(true);
frame.setSize(500, 500);
}
Trong trường hợp này, tôi muốn sử dụng JList
để hiển thị các dự án hoặc WrapLayout
để bố trí các nút