为浮动JToolBar设置特定位置

时间:2017-01-17 15:58:53

标签: java swing jtoolbar

我想在启动应用程序时为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);
}

谢谢

2 个答案:

答案 0 :(得分:2)

setFloating(boolean, Point)的源代码中,Point参数仅用于false第一个参数的情况,并用于查找将工具栏停靠到其原始位置的位置Container

基本上,floating是布尔参数,它类似于:

if(floating),取消停靠工具栏并将其放在Window中,该位置对应floatingX的内部floatingYBasicToolBarUI变量({完全不使用{1}}参数

Point,将其停靠在else,使用Container参数查找停靠位置(北,东......)。

幸运的是,有一种方法可以修改PointfloatingXfloatingY的值。

所以只需在调用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);

}