我想在启动应用程序时为JToolBar设置一个特定的位置。 有没有办法在屏幕上的特定点上设置JToolBar的浮动位置?
我将此代码作为示例创建工具栏并尝试将其设置为浮点(300,200),而是在位置(0,0)显示它(浮动)。
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JToolBar toolbar = new JToolBar();
toolbar.add(new JButton("button 1"));
toolbar.add(new JButton("button 2"));
Container contentPane = frame.getContentPane();
contentPane.add(toolbar, BorderLayout.NORTH);
((BasicToolBarUI) toolbar.getUI()).setFloating(true, new Point(300, 200));
frame.setSize(350, 150);
frame.setVisible(true);
}
谢谢
答案 0 :(得分:2)
从setFloating(boolean, Point)的源代码中,Point
参数仅用于false
第一个参数的情况,并用于查找将工具栏停靠到其原始位置的位置Container
。
基本上,floating
是布尔参数,它类似于:
if(floating)
,取消停靠工具栏并将其放在Window
中,该位置对应floatingX
的内部floatingY
和BasicToolBarUI
变量({完全不使用{1}}参数
Point
,将其停靠在else
,使用Container
参数查找停靠位置(北,东......)。
幸运的是,有一种方法可以修改Point
和floatingX
:floatingY
的值。
所以只需在调用setFloatingLocation(int x, int y)
之前调用此方法(您可以向其传递setFloating
null
参数,因为它无论如何都不会被使用。)
Point
答案 1 :(得分:0)
要首先为工具栏提供绝对布局,您必须将布局设置为null,如下所示:frame.setLayout(null);
然后,您只需使用((BasicToolBarUI) toolbar.getUI()).setFloating(true, new Point(300, 200));
toolBar.setBounds(x,y, width, height);
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setLayout(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JToolBar toolbar = new JToolBar();
toolbar.add(new JButton("button 1"));
toolbar.add(new JButton("button 2"));
Container contentPane = frame.getContentPane();
contentPane.add(toolbar, BorderLayout.NORTH);
toolBar.setBounds(100,100,50,50);
frame.setSize(350, 150);
frame.setVisible(true);
}