Java技术问题:如何将JPanel内的JLabel移至右下角
解决JLabel在面板中对齐不生效及方法报错问题
首先说对齐不生效的问题:
你设置的setHorizontalAlignment(SwingConstants.RIGHT)是控制JLabel内部文本的对齐方向,但如果你的answerPanel用的是默认的FlowLayout布局,JLabel会被压缩到刚好容纳文本的尺寸,这时候内部文本对齐的效果根本看不出来——因为标签本身和文本一样宽,左对齐右对齐没区别。
解决办法分几种:
给JLabel设置足够的宽度,让内部文本有对齐的空间:
answer.setPreferredSize(new Dimension(200, 30)); // 按需调整尺寸这样标签变宽后,文本就会靠右显示。
改变
answerPanel的布局管理器,让JLabel能占据合适的空间:
比如用BorderLayout,把JLabel放在右侧:answerPanel.setLayout(new BorderLayout()); answerPanel.add(answer, BorderLayout.EAST);或者用
GridBagLayout让JLabel占满面板宽度并右对齐:answerPanel.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.weightx = 1.0; gbc.anchor = GridBagConstraints.EAST; answerPanel.add(answer, gbc);
再说说你用setVerticalTextPosition等方法报错的问题:
大概率是没正确导入SwingConstants类。要么在代码顶部加导入:
import javax.swing.SwingConstants;
要么直接用全类名指定参数,比如:
answer.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
另外检查一下拼写,比如有没有把SwingConstants写成别的,参数是否是合法的枚举值(TOP、BOTTOM、CENTER这些)。
内容的提问来源于stack exchange,提问作者David Johnson
相关产品推荐
相关产品推荐

