1

次のコードを使用して JTabbedPane を作成します

new JTabbedPane(JTabbedPane.LEFT,JTabbedPane.SCROLL_TAB_LAYOUT);

タブ選択領域よりも幅が狭いスクロールになります

ここに画像の説明を入力

タブ選択領域に収まるようにスクロール幅を広くするにはどうすればよいですか?

4

1 に答える 1

5

新しい優先サイズBasicTabbedPaneUIを提供する際に、独自のボタンを拡張および実装できます。これらのボタンの独自のプライベート実装がcreateScrollButton()あるようです - . 次のような同様のものを作成できます。BasicTabbedPaneUIScrollableTabButton

public class ExtendedTabbedPaneUI extends BasicTabbedPaneUI {

    @Override
    protected JButton createScrollButton(int direction) {
         if (direction != SOUTH && direction != NORTH && direction != EAST &&
                                   direction != WEST) {
             throw new IllegalArgumentException("Direction must be one of: " +
                                                "SOUTH, NORTH, EAST or WEST");
         }

         //return new ScrollableTabButton(direction);

         return new BasicArrowButton(direction,
            UIManager.getColor("TabbedPane.selected"),
            UIManager.getColor("TabbedPane.shadow"),
            UIManager.getColor("TabbedPane.darkShadow"),
            UIManager.getColor("TabbedPane.highlight")) {

            @Override
            public Dimension getPreferredSize() {
                int maxWidth = calculateMaxTabWidth(JTabbedPane.LEFT);
                return new Dimension(maxWidth, super.getPreferredSize().height);
            }
        };
    }
}

新しい UI をセットアップするには:

tabbedPane.setUI(new ExtendedTabbedPaneUI());
于 2012-05-10T18:25:12.183 に答える