gpt4 book ai didi

java - 将 JScrollPane 中的元素放在确定的位置

转载 作者:行者123 更新时间:2023-11-29 04:45:43 26 4
gpt4 key购买 nike

我正在制作一个以这种方式工作的 GUI:

就像一堆元素。我在我的堆栈中输入一个元素,我想位于我的 JPanel 的中心(在 JScrollPane 内)。我添加的下一个元素需要位于中心,最后一个元素位于 X 左侧。我添加了一个新元素并且出现了相同的情况。当一个元素不在 JPanel 中时,需要激活 JScrollPane 并让我向左滚动以查看所有元素。

JPanel a = new JPanel();
this.setBackground(new java.awt.Color(200, 200, 200));
this.setPreferredSize(new java.awt.Dimension(father.getSize().width, height));
BoxLayout aaa = new BoxLayout(this,1);
this.setLayout(aaa);
FlowLayout MigasDePanLayout = new FlowLayout(0,80,0); //Este es la separacion entre elementos
a.setLayout(MigasDePanLayout);
JButton ab = null;

sp = new JScrollPane(a);
sp.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
sp.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
sp.setBounds(0, 0,father.getSize().width, height);

this.add(sp);
father.add(this, java.awt.BorderLayout.PAGE_END);
for (int i = 0; i < 20; i++) {

ab = new JButton("HHH");
ab.setLocation(i*20, 0);
a.add(ab);
}
addMouseListener(this);
addMouseMotionListener(this);
}

我有这段代码(父亲是一个 JPanel)。

我使用 Layout 来分隔每个元素,但是当我添加一个新元素时,总是设置在从左边开始的第一个孔上

[][][]

我添加了一个新元素

[A][][]

我想要这个:

[][A][]

或者这个,但是将元素放在 View 的中心:

[][][A] --> []|[][A][]

但我不知道我是否可以选择我想放置元素的位置。

我读到有必要删除布局以获得自由,您可以将元素(在本例中为按钮)放在 X Y 位置。

有人知道有没有办法把元素放在我想要的位置? (是从右到左而不是从左到右插入的东西,但居中元素)

我需要删除布局或创建另一个组件来实现我的目标吗?

感谢您的宝贵时间!

最佳答案

But I dont know if I can choose where I want to put the element.

您可以使用:

panel.add(component, index);

在特定位置插入组件。大多数不使用约束的布局管理器(如 BoxLayout、FlowLayout 和 GridLayout)都会遵守此参数。

int count = panel.getComponentCount();

所以索引的值一定小于计数。

(is something lie that insert from right to left instead left to right, but centering the element)

因此,当使用居中对齐的 FlowLayout 时,您只需要:

panel.add(component, 0);

此外,不要使用如下代码:

ab.setLocation(i*20, 0);

这很困惑,因为它会被忽略,因为布局管理器将设置位置和大小。

关于java - 将 JScrollPane 中的元素放在确定的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37286455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com