Để tham khảo, đây là ví dụ về số không gặp sự cố. Nó sử dụng một GridLayout(0, 1)
với khoảng trống và đường viền đồng dư. Thay đổi kích thước khung kèm theo để xem hiệu ứng. Thử nghiệm với Box(BoxLayout.Y_AXIS)
làm phương án thay thế.
Tôi nghi ngờ mã ban đầu (sai) sử dụng một số kết hợp của setXxxSize()
hoặc setBounds()
, sẽ hiển thị hiệu ứng được hiển thị nếu được chọn & Cảm thấy có hình dạng khác nhau được chỉ định bởi giao diện người dùng của nút.
import java.awt.EventQueue;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
/** @see https://stackoverflow.com/a/31078625/230513 */
public class Buttons {
private void display() {
JFrame f = new JFrame("Buttons");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p = new JPanel(new GridLayout(0, 1, 10, 10));
p.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
for (int i = 0; i < 3; i++) {
p.add(new JButton("Button " + (i + 1)));
}
f.add(p);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Buttons()::display);
}
}
Bạn có thể đăng một mã ví dụ [MCVE] (http://stackoverflow.com/help/mcve) để minh họa vấn đề của bạn? –
Di chuyển từ 6 đến 8 hay 7 đến 8? – Adam
Đây là 5 đến 8 – RBz