JPanel分离边框选择

JPanel detached border selection

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

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

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

now 我想把上面的标签 F1 到 F10 正好放在第一个 now 元素的中心?我要怎么做?有什么推荐吗?

请注意,我不能对第一行元素使用 TitledBorder(有标题但没有边框),因为我对每个元素都有一个 selection 函数,如果我这样做,它 select 整个第一行元素(元素 + titledborder)非常丑陋并且与其他行不相似?

你有什么解决办法吗?

使顶行成为具有默认布局的 JPanelFlowLayout。添加十个自定义 JLabel 实例,您在其中覆盖 getPreferredSize() 到 return 标称图片宽度和高度不小于父级实现 return 的高度。

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