设置浮动 JToolBar 的特定位置



我想在启动应用程序时将特定位置设置为 JToolBar。有没有办法在屏幕上的特定点上设置 JToolBar 的浮动位置?

我以这段代码为例,它将创建一个工具栏并尝试将其设置为浮动在 Point(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);
}

谢谢

从 setFloating(布尔值,点)的源代码来看,Point 参数仅在第一个参数false的情况下使用,用于查找将工具栏停靠到其原始Container的位置。

基本上,floating布尔参数,它是这样的:

if(floating),取消对接工具栏并将其放在一个Window中,该位置对应于BasicToolBarUI的内部floatingXfloatingY变量(根本不使用Point参数)

else,使用Point参数将其停靠回Container,找到停靠它的位置(北,东...

幸运的是,存在一种修改 floatingXfloatingY 值的方法:setFloatingLocation(int x, int y)

因此,只需在调用setFloating之前调用此方法(您可以向其传递一个null Point参数,因为它无论如何都不会被使用)。

((BasicToolBarUI) toolbar.getUI()).setFloatingLocation(300, 200);
((BasicToolBarUI) toolbar.getUI()).setFloating(true, null);

要首先为工具栏提供绝对布局,您必须将布局设置为 null,如下所示: frame.setLayout(null); 然后

,您可以使用toolBar.setBounds(x,y, width, height);而不是((BasicToolBarUI) toolbar.getUI()).setFloating(true, new Point(300, 200));
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);

}

相关内容

  • 没有找到相关文章