java - 将 ArrayList 内容打印到 TextArea 中

标签 java swing arraylist

我有两个名为的ArrayList。

keys = {"cat", "dog", "mouse"}
values = {"furry;white", "greyhound;beast", "little;rat"}

我希望将它们打印在 JTextArea 中(因为我希望它们是可编辑的)或任何其他 GUI 组件,如下所示:

------------------
cat   |   furry
      |   white
-------------------
dog   |   greyhound
      |   beast
-------------------
mouse |   little
      |   rat

我应该为每个条目动态创建一个新的 TextArea 吗?如果是这样我该怎么做?这是正确的方法吗?

我已经尝试过使用 JTable,但问题是单元格高度是固定的,文本换行很困惑。

最佳答案

您可以使用GridLayout

Map<String,String> map=new HashMap<String,String>(); //key-Value pair
map.put("cat",""furry\n white"); // \n So that you will get a new line character in text area
map.put("dog","greyhound \n beast");
JFrame frame = new JFrame();
frame.setLayout(new GridLayout(rows,columns));//In your case (map.size,2)
frame.setSize(300, 300);

//Now You need to Iterate through the Map.

for(Map.Entry<String,String>entry:map.entrySet()){
  JTextArea left=JTextArea(entry.getKey());
  JTextArea right=JTextArea(entry.getValue());
  frame.add(left);  //Adding each key to the Frame on left side
  frame.add(right); //This is the value you want in side of key
 }

frame.setVisible(true);

您将得到类似这样的内容,但格式可编辑

enter image description here

I have two ArrayLists called keys and values.

keys = {"cat", "dog", "mouse"} 
values = {"furry;white", "greyhound;beast", "little;rat"}

正如您所看到的,您正在单独维护键和值的列表,这是一种不好的做法,您可以拥有 Map (只需阅读此链接,它会很有帮助)它将 key 及其相应的 value 存储在单个记录中,

现在一点建议

如果您想对一个使用多个值,我建议您使用MultiMap它针对一个键维护多个值,这是一个非常有用的库。

关于java - 将 ArrayList 内容打印到 TextArea 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28471790/

相关文章:

java - 如何对齐 Jframe 标签和按钮

Java的swing print()用法

Java List of List of List,更好的解决方案?

java - 在 Android 上 react native RTL

java - Selenium + Java 测试充满了 span 元素。解决不可点击元素问题的最佳方法

java-获取正确的小数值的问题

java - 覆盖克隆时处理最终字段

java - 按下按钮时运行线程

java - 不使用 HashSet 删除 ArrayList 中的重复元素

java - 如何在ArrayList中存储选定的复选框值