我有一个JPanel列表,列表中的每个元素都有10个JPanel元素,里面包含一张图片。 (如图)
我设置了Float布局,使它们一个接一个地水平对齐。 (每行JPanel元素)
我将此列表的每个元素垂直放在另一个外部JPanel上,一切正常。 (每个垂直JPanel)
现在我想将上面的标签F1直到F10准确地放在第一个现在元素的中心?怎么样呢?任何建议?
注意我不能对第一行元素使用TitledBorder(带标题和无边框),因为我有每个元素的选择函数,如果我这样做,它选择整个第一行元素(元素+ titledborder)这是非常难看,与其他行不相似?
你有任何解决方案吗?答案 0 :(得分:2)
将顶行设为JPanel
,使用默认布局FlowLayout
。添加自定义JLabel
的十个实例,其中覆盖getPreferredSize()
以返回标称图片宽度和不低于父级实现返回的高度。
private static final int W = 50;
private static class MyLabel extends JLabel {
public MyLabel(String text) {
super(text);
this.setHorizontalAlignment(CENTER);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(W, super.getPreferredSize().height);
}
}