JPanel分离边界选择

时间:2015-11-30 11:51:34

标签: java swing jpanel

enter image description here

我有一个JPanel列表,列表中的每个元素都有10个JPanel元素,里面包含一张图片。 (如图)

我设置了Float布局,使它们一个接一个地水平对齐。 (每行JPanel元素)

我将此列表的每个元素垂直放在另一个外部JPanel上,一切正常。 (每个垂直JPanel)

现在我想将上面的标签F1直到F10准确地放在第一个现在元素的中心?怎么样呢?任何建议?

注意我不能对第一行元素使用TitledBorder(带标题和无边框),因为我有每个元素的选择函数,如果我这样做,它选择整个第一行元素(元素+ titledborder)这是非常难看,与其他行不相似?

你有任何解决方案吗?

1 个答案:

答案 0 :(得分:2)

将顶行设为JPanel,使用默认布局FlowLayout。添加自定义JLabel的十个实例,其中覆盖getPreferredSize()以返回标称图片宽度和不低于父级实现返回的高度。

image

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);
    }
}