【发布时间】:2021-11-18 23:47:42
【问题描述】:
【问题讨论】:
-
玩 UI 很少值得付出努力,因为您需要在所有希望代码运行的平台上都这样做。但您可以查看
BasicSplitPaneUI中使用的BasicSplitPaneDivider。您的平台可能会扩展这些类中的每一个,以便为平台提供自定义 LAF。因此,您需要创建自定义 UI 和分隔符。
标签: java swing jsplitpane
【问题讨论】:
BasicSplitPaneUI 中使用的BasicSplitPaneDivider。您的平台可能会扩展这些类中的每一个,以便为平台提供自定义 LAF。因此,您需要创建自定义 UI 和分隔符。
标签: java swing jsplitpane
正如评论中提到的,正确的解决方案是创建一个自定义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 类进行的更改类型。
【讨论】: