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尝试使用Replacenames.get(i)
asText.get(i)
或者试试看
for(String str : Text){
JLabel jl = new JLabel(str);
}
尝试使用Replacenames.get(i)
asText.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)
?谢谢。最后一个问题。所有内容都添加到左上角。我如何选择将其放置?取决于您想将内容放置在何处/如何放置。不知道这一点,我真的帮不了什么忙。您可以选择其他一些布局管理器:谢谢。最后一个问题。所有内容都添加到左上角。如何放置我可以选择放在哪里吗?取决于你想放在哪里/如何放东西。不知道这一点,我真的帮不了什么忙。你可以选择其他一些布局管理器: