在循环中添加JButtons

问题描述 投票:0回答:1

JAVA摇摆问题

我想基于代表按钮文本的字符串列表创建JButtons列表。第一步,我从一个外部文本文件中收集按钮文本的数据。此数据存储在数据变量中。

List<String> data = ReadFile("texts.txt")

现在,我要创建名为按钮的JButton列表。在那里,我设定了他们的文字和界限。边界是相对于索引的,因此按钮位于彼此下方。最后,我将按钮添加到框架和按钮列表中。

List<JButton> buttons = new ArrayList<>();
for (int index = 0; index < data.size(); index++) {
    JButton button = new JButton();
    button.setText(data.get(index));
    button.setBounds(0, index*50, 100, 50);
    add(button);
    buttons.add(button);

但是当我执行此操作时,最后一个按钮结束时很大,当我将鼠标悬停在它们上方时,第一个按钮也消失了,但这是基于最后一个按钮位于上方的事实:

Picture of the executed script

最后一个按钮具有框架的大小,如果我调整框架的大小没关系:

Picture of the resized screen

我希望有人可以帮助我或告诉我在哪里可以找到帮助。谢谢。

java swing loops jbutton bounds
1个回答
0
投票

您需要为JFrame设置布局,默认布局是边框布局。它将最后添加的组件拉伸到框架的大小。您可以将Layout设置为null,因此可以使用setBound absolute放置按钮。

命令:JFrame.setLayout(null);

© www.soinside.com 2019 - 2024. All rights reserved.