如何在面板的其余组件上绘制停靠的 JToolBar
How to paint a docked JToolBar over the rest of the components from the panel
有没有办法在现有面板的其余组件上绘制停靠的 JToolBar?
基本上我希望在停靠工具栏时(从浮动位置)不干扰我的其他组件和现有布局。
简单的例子,只是为了入门..
public class ToolBarSample {
public static void main(final String args[]) {
JFrame frame = new JFrame("JToolBar Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JToolBar toolbar = new JToolBar();
toolbar.add(new JButton("button"));
toolbar.add(new JButton("button 2"));
Container contentPane = frame.getContentPane();
contentPane.add(toolbar, BorderLayout.NORTH);
contentPane.add(new JLabel("I want this to be under the toolbar"), BorderLayout.CENTER);
// set the toolbar floating
((BasicToolBarUI) toolbar.getUI()).setFloatingLocation(10, 10);
((BasicToolBarUI) toolbar.getUI()).setFloating(true, null);
// TODO - after application starts, manually dock the toolbar to any position (north/east...)
frame.setSize(250, 100);
frame.setVisible(true);
}
}
您可以将工具栏直接添加到 JFrame
的 JLayeredPane。
这里有一些有用的文档:How to Use Layered Panes
public static void main(final String args[]) {
JFrame frame = new JFrame("JToolBar Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JToolBar toolbar = new JToolBar();
toolbar.add(new JButton("button"));
toolbar.add(new JButton("button 2"));
Container contentPane = frame.getContentPane();
//contentPane.add(toolbar, BorderLayout.NORTH);
contentPane.add(new JLabel("I want this to be under the toolbar"), BorderLayout.CENTER);
JLayeredPane layeredPane = frame.getLayeredPane();
layeredPane.setLayout(new BorderLayout());
layeredPane.add(toolbar, BorderLayout.NORTH);
// set the toolbar floating
((BasicToolBarUI) toolbar.getUI()).setFloatingLocation(10, 10);
((BasicToolBarUI) toolbar.getUI()).setFloating(true, null);
// TODO - after application starts, manually dock the toolbar to any position (north/east...)
frame.setSize(250, 100);
frame.setVisible(true);
}
有没有办法在现有面板的其余组件上绘制停靠的 JToolBar?
基本上我希望在停靠工具栏时(从浮动位置)不干扰我的其他组件和现有布局。
简单的例子,只是为了入门..
public class ToolBarSample {
public static void main(final String args[]) {
JFrame frame = new JFrame("JToolBar Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JToolBar toolbar = new JToolBar();
toolbar.add(new JButton("button"));
toolbar.add(new JButton("button 2"));
Container contentPane = frame.getContentPane();
contentPane.add(toolbar, BorderLayout.NORTH);
contentPane.add(new JLabel("I want this to be under the toolbar"), BorderLayout.CENTER);
// set the toolbar floating
((BasicToolBarUI) toolbar.getUI()).setFloatingLocation(10, 10);
((BasicToolBarUI) toolbar.getUI()).setFloating(true, null);
// TODO - after application starts, manually dock the toolbar to any position (north/east...)
frame.setSize(250, 100);
frame.setVisible(true);
}
}
您可以将工具栏直接添加到 JFrame
的 JLayeredPane。
这里有一些有用的文档:How to Use Layered Panes
public static void main(final String args[]) {
JFrame frame = new JFrame("JToolBar Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JToolBar toolbar = new JToolBar();
toolbar.add(new JButton("button"));
toolbar.add(new JButton("button 2"));
Container contentPane = frame.getContentPane();
//contentPane.add(toolbar, BorderLayout.NORTH);
contentPane.add(new JLabel("I want this to be under the toolbar"), BorderLayout.CENTER);
JLayeredPane layeredPane = frame.getLayeredPane();
layeredPane.setLayout(new BorderLayout());
layeredPane.add(toolbar, BorderLayout.NORTH);
// set the toolbar floating
((BasicToolBarUI) toolbar.getUI()).setFloatingLocation(10, 10);
((BasicToolBarUI) toolbar.getUI()).setFloating(true, null);
// TODO - after application starts, manually dock the toolbar to any position (north/east...)
frame.setSize(250, 100);
frame.setVisible(true);
}