![](/img/trans.png)
[英]How to align vertically buttons of different sizes within a GridBagLayout?
[英]How can i align buttons with different sizes at bottom of panel?
我創建了5個大小不同的按鈕,並嘗試使用setAlignmentY()
方法將對齊方式設置為底部,但是它不起作用。
我的代碼:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public final class Tester extends JFrame {
public Tester() {
setTitle("Tester window");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(800, 600);
createMainPanel();
setVisible(true);
}
public static void main(String args[]) {
Runnable runnable = new Runnable() {
public void run() {
new Tester();
}
};
EventQueue.invokeLater(runnable);
}
private void createMainPanel() {
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(new CenterPanel(), BorderLayout.SOUTH);
add(mainPanel);
}
private class CenterPanel extends JPanel {
public CenterPanel() {
Random r = new Random();
for (int i = 0; i < 5; ++i) {
JButton button = new JButton(i + " button");
button.setPreferredSize(new Dimension(100, r.nextInt(500)+20));
// button.setAlignmentY(Component.BOTTOM_ALIGNMENT);
add(button);
}
}
}
}
建議:
例如:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.util.Random;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public final class Tester extends JFrame {
public Tester() {
setTitle("Tester window");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(800, 600);
createMainPanel();
setVisible(true);
}
public static void main(String args[]) {
Runnable runnable = new Runnable() {
public void run() {
new Tester();
}
};
EventQueue.invokeLater(runnable);
}
private void createMainPanel() {
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(new CenterPanel(), BorderLayout.SOUTH);
add(mainPanel);
}
private class CenterPanel extends JPanel {
public CenterPanel() {
// inner panel created to center the buttons in the center panel
JPanel innerPanel = new JPanel(); // uss flow layout to center buttons
innerPanel.setLayout(new BoxLayout(innerPanel, BoxLayout.LINE_AXIS));
add(innerPanel);
Random r = new Random();
for (int i = 0; i < 5; ++i) {
JButton button = new JButton(i + " button");
button.setAlignmentY(JComponent.BOTTOM_ALIGNMENT);
int width = 100;
int height = r.nextInt(500)+20;
Dimension d = new Dimension(width, height);
button.setPreferredSize(d);
button.setMaximumSize(d);
// button.setMinimumSize(d);
// button.setAlignmentY(Component.BOTTOM_ALIGNMENT);
innerPanel.add(button);
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.