Java 将ArrayList中的每个元素添加到JFrame

Java 将ArrayList中的每个元素添加到JFrame,java,swing,arraylist,Java,Swing,Arraylist,所以我想在窗口中添加一些文本 我将文本添加到如下列表中: ArrayList<String> Text = new ArrayList<String>(); Text.add("text1"); Text.add("text2"); ... Text.add("text*n*"); ArrayList Text=new ArrayList(); 文本。添加(“文本1”); 文本。添加(“文本2”); ... Text.添加(“Text*n*”); 现在我想将这些项目添

所以我想在窗口中添加一些文本

我将文本添加到如下列表中:

ArrayList<String> Text = new ArrayList<String>();
Text.add("text1");
Text.add("text2");
...
Text.add("text*n*");
ArrayList Text=new ArrayList();
文本。添加(“文本1”);
文本。添加(“文本2”);
...
Text.添加(“Text*n*”);
现在我想将这些项目添加到JFrame中。现在,我对编程相当陌生,所以可能有比这更好的解决方案。但以下是我尝试的(我使用for循环,因为我认为这也是管理标签边界的最简单方法:

for(int i = 0; i<Text.size();i++){
    JLabel jl = new JLabel(names.get(i));

    jl.setBounds(50,100+20*i,200,50);
    this.add(jl);

}

for(int i=0;i尝试使用Replace
names.get(i)
as
Text.get(i)

或者试试看

for(String str : Text){
    JLabel jl = new JLabel(str);
}

尝试使用Replace
names.get(i)
as
Text.get(i)

或者试试看

for(String str : Text){
    JLabel jl = new JLabel(str);
}
试试这个:

String output = "";
for(int i = 0; i<Text.size();i++)
{
    output += Text.get[i] + "\n";

}
JLabel jl = new JLabel(output);
字符串输出=”;
对于(int i=0;i请尝试以下方法:

String output = "";
for(int i = 0; i<Text.size();i++)
{
    output += Text.get[i] + "\n";

}
JLabel jl = new JLabel(output);
字符串输出=”;
对于(int i=0;i
在这里,您总是为j1构造一个新对象,在循环之后,您就有了最新的对象


在这里,您总是为j1构建一个新对象,在循环之后,您只需要最新的对象。

您需要一个布局,否则它们会被添加到彼此的顶部。尝试将所有内容添加到
JPanel
中,并且只将面板添加到末尾的框架中

JFrame frame = new JFrame("title");
JPanel panel = new JPanel();
// Y_AXIS means each component added will be added vertically
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

for (String str : Text) {
   JLabel j1 = new JLabel(str);
   panel.add(j1);
}

frame.add(panel);
frame.pack();
frame.setVisible(true);

你需要一个布局,否则它们会相互叠加。尝试将所有内容添加到
JPanel
中,只将面板添加到末尾的框架中

JFrame frame = new JFrame("title");
JPanel panel = new JPanel();
// Y_AXIS means each component added will be added vertically
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

for (String str : Text) {
   JLabel j1 = new JLabel(str);
   panel.add(j1);
}

frame.add(panel);
frame.pack();
frame.setVisible(true);

听起来您想使用JList,而不是JLabel的网格

i、 e

DefaultListModel listModel=新的DefaultListModel();
JList myJList=新JList(列表模型);
//假设您有一个名为text的字符串或数组列表
用于(字符串文本:文本){
listModel.addElement(文本);
}
JScrollPane listcrollpane=新的JScrollPane(myJList);
//然后将listScrollPane添加到GUI中

此外:

  • 请学习并遵循Java命名规则。变量名应该以小写字母开头,所以“text”不是text
  • 你应该知道,每当有人使用空布局和挫折(…)时,小狗就会死亡。请不要对小狗残忍,也不要创建难以维护和升级的GUI。学习并使用Swing布局管理器。你不会后悔,小狗也不会后悔

听起来您想使用JList,而不是JLabel的网格

i、 e

DefaultListModel listModel=新的DefaultListModel();
JList myJList=新JList(列表模型);
//假设您有一个名为text的字符串或数组列表
用于(字符串文本:文本){
listModel.addElement(文本);
}
JScrollPane listcrollpane=新的JScrollPane(myJList);
//然后将listScrollPane添加到GUI中

此外:

  • 请学习并遵循Java命名规则。变量名称应该以小写字母开头,所以“text”不是文本
  • 你应该知道,每当有人使用空布局和挫折(…)时,小狗就会死亡。请不要对小狗残忍,也不要创建难以维护和升级的GUI。学习并使用Swing布局管理器。你不会后悔,小狗也不会后悔

为什么要使用
名称。get(i)
而不是
文本。get(i)
?为什么要使用
名称。get(i)
而不是
文本。get(i)
?谢谢。最后一个问题。所有内容都添加到左上角。我如何选择将其放置?取决于您想将内容放置在何处/如何放置。不知道这一点,我真的帮不了什么忙。您可以选择其他一些布局管理器:谢谢。最后一个问题。所有内容都添加到左上角。如何放置我可以选择放在哪里吗?取决于你想放在哪里/如何放东西。不知道这一点,我真的帮不了什么忙。你可以选择其他一些布局管理器: