0

如何达到 outerPanel 的全宽?

    private JPanel createLabelPanel() {

        final JToolTip tt = new JToolTip();
        //tt.setSize(new Dimension(100,200));
        final CompoundBorder cb = new CompoundBorder(tt.getBorder(), BorderFactory.createEmptyBorder(2, 2, 2, 2));
        final JPanel innerPanel = new JPanel();
        innerPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK));

        innerPanel.setBorder(cb);
        innerPanel.setBackground(tt.getBackground());
        innerPanel.add(displayLabel);
        innerPanel.setBorder(BorderFactory.createLineBorder(Color.GREEN));

        final JScrollPane tooltipscrool = new JScrollPane(innerPanel);
        //tooltipscrool.setMinimumSize(new Dimension(200,100));
        tooltipscrool.setPreferredSize(new Dimension(100,120));
        tooltipscrool.setBorder(BorderFactory.createLineBorder(Color.BLACK));

        final JPanel outerPanel = new JPanel();
        outerPanel.add(tooltipscrool);
        outerPanel.setBorder(BorderFactory.createLineBorder(Color.GREEN));
        //outerPanel.set
        return outerPanel;
    }

让我:

在此处输入图像描述

我的目标是拥有一个完整的内部面板(绿色)。

4

1 回答 1

1

JPanel默认使用a FlowLayout,这倾向于使用每个组件的首选大小来定义它们的大小。

而是使用BorderLayout, 例如...

final JPanel outerPanel = new JPanel(new BorderLayout());

查看如何在容器中布局组件以获取更多详细信息

您还应该setPreferredSize尽可能避免使用,请查看是否应该避免在 Java Swing 中使用 set(Preferred|Maximum|Minimum)Size 方法?更多细节

于 2013-10-17T07:57:45.623 回答