Java 如何将JLabel与JPanel的底部对齐
我希望Java 如何将JLabel与JPanel的底部对齐,java,swing,layout-manager,Java,Swing,Layout Manager,我希望JLabel项3位于JPanel的底部,因为有时它会出现在窗口中的2d数组的顶部。我尝试使用项3.setVerticalAlignment(JLabel.BOTTOM)。方法,但它不起作用。有什么建议吗 public class Sokoban extends JPanel { private Contents[][] field; private Rectangle2D.Double r1; private static final Color[] colours = {
JLabel
项3位于JPanel
的底部,因为有时它会出现在窗口中的2d数组的顶部。我尝试使用项3.setVerticalAlignment(JLabel.BOTTOM)
。方法,但它不起作用。有什么建议吗
public class Sokoban extends JPanel {
private Contents[][] field;
private Rectangle2D.Double r1;
private static final Color[] colours = {
Color.BLACK, Color.RED, Color.GREEN, Color.CYAN, Color.MAGENTA, Color.BLUE, Color.YELLOW
};
private LevelReader lr = new LevelReader();
private int currentLevel;
private Contents [][] levelData;
private int countMoves = 1;
JLabel item3 = new JLabel("ccc");
long time1;
public Sokoban(){
lr.readLevels("m1.txt");
this.setPreferredSize(new Dimension(900,500));
this.setFocusable(true);
this.requestFocus();
this.addKeyListener(new MyKeyListener());
initLevel(0);
this.add(item3);
item3.setVerticalAlignment(JLabel.BOTTOM);
}
public static void main (String[] args) {
JFrame f = new JFrame("Sokoban");
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLayout(new FlowLayout());
f.add(new Sokoban());
f.pack();
f.setVisible(true);
}
您可以使用
BorderLayout
并将标签添加到容器的PAGE\u END
位置
setLayout(new BorderLayout());
add(itemLabel, BorderLayout.PAGE_END);
JLabel itemLabel = new JLabel("ccc", JLabel.CENTER);
当然,您需要设置水平对齐,以实现最初由标签的JPanel
FlowLayout
容器生成的沿X轴对齐
setLayout(new BorderLayout());
add(itemLabel, BorderLayout.PAGE_END);
JLabel itemLabel = new JLabel("ccc", JLabel.CENTER);
这真的取决于你想要什么。查看下面的内容,查看可用的不同类型的LayoutManager及其示例:其他答案告诉了您可以做什么,因此我将解释当前解决方案不起作用的原因。您误解了
设置垂直对齐(int)
的作用。它设置文本相对于标签的显示位置,而不是标签在其容器中的显示位置。