【问题标题】:How do I remove Swing JSplitPane intermediate styles?如何删除 Swing JSplitPane 中间样式?
【发布时间】:2021-11-18 23:47:42
【问题描述】:

如何删除 Swing JSplitPane 中间样式?

基本SplitPaneDivider

【问题讨论】:

  • 玩 UI 很少值得付出努力,因为您需要在所有希望代码运行的平台上都这样做。但您可以查看BasicSplitPaneUI 中使用的BasicSplitPaneDivider。您的平台可能会扩展这些类中的每一个,以便为平台提供自定义 LAF。因此,您需要创建自定义 UI 和分隔符。

标签: java swing jsplitpane


【解决方案1】:

正如评论中提到的,正确的解决方案是创建一个自定义BasicSplitPaneDivider

作为 hack,您可以访问分隔线并向其中添加自己的按钮:

    BasicSplitPaneUI ui = (BasicSplitPaneUI)splitPane.getUI();
    BasicSplitPaneDivider divider = ui.getDivider();

    divider.setDividerSize(25);
    JButton up = (JButton)divider.getComponent(0);
    up.setPreferredSize( up.getSize() );
    up.setMaximumSize(up.getPreferredSize());
    up.setAlignmentY(0.5f);

    JButton down = (JButton)divider.getComponent(1);
    down.setPreferredSize( down.getSize() );
    down.setMaximumSize(down.getPreferredSize());
    down.setAlignmentY(0.5f);

    divider.setLayout( new BoxLayout(divider, BoxLayout.X_AXIS));
    divider.add(up);
    divider.add(down);
    divider.add(Box.createHorizontalGlue());
    System.out.println(divider.getLayout());
    JButton button = new JButton("Click Me");
    button.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    divider.add(button);
    divider.revalidate();
    divider.repaint();

上述代码需要在框架实现后执行。

在任何情况下,以上都将演示需要对BasicSplitPaneDivider 类进行的更改类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    相关资源
    最近更新 更多