5

JTree のインスタンスを 1 つだけ含む JScrollPane があります。JScrollPane内のJTreeの周りにマージンを設定するにはどうすればよいですか?

私はそのようなコードを持っています

tree.setPreferredSize(new Dimension(200, 200));
    JScrollPane scrollerTree = new JScrollPane(tree, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    scrollerTree.setPreferredSize(new Dimension(200, 199));
    scrollerTree.getVerticalScrollBar().setUnitIncrement(16);

私が達成したいのは、そのマージンがスクロールペインのコンテンツでスクロール可能になることです。

4

1 に答える 1

13

更新:あなたの更新された質問から、あなたは実際に JComponent.setBorderは 、スクリーンショットの例の後にいると思います:

スクリーンショットの境界線

コード:

public static void main(String[] args) {

    JTree tree = new JTree();
    tree.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));

    JFrame frame = new JFrame("Test");
    frame.add(new JScrollPane(tree));
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
}

元の回答、ビューポートの周りに境界線が必要な場合は、次を使用しますJScrollPane.setViewportBorder:

スクリーンショット ビューポートの境界線

コード:

public static void main(String[] args) {

    JScrollPane scroll = new JScrollPane(new JTree());
    scroll.setViewportBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

    JFrame frame = new JFrame("Test");
    frame.add(scroll);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
}
于 2012-08-07T08:15:45.597 に答える