2015-12-15 2 views
1

я работаю над программой, которая анализирует текст и распечатывает на выходе, как этотТаблицы в Java Swing

LS 1 -> 3 
LS 2 -> 3 
LS 3 -> 2 
PRP itself -> 2 
PRP it -> 5 
DT all -> 7 
DT All -> 11 
DT no -> 9 
DT a -> 77 
NNP Milwaukee -> 2 
NNP D65 -> 1 
NNP STD -> 1 
NNP Gimp -> 3 
NNP Constitution -> 1 

Вместо этого я хочу что-то вроде

enter image description here

Я попытался с помощью JTable для 3 часа и не мог понять, как сортировать текст в таблице. Пожалуйста помоги.

Пример кода

public String getTagsList() throws IOException { 
    String output = ""; 
    for (Map.Entry<String, Map<String, Integer>> entry : tagMap.entrySet()) { 
     String oa = entry.getKey(); 
     Map<String, Integer> words = entry.getValue(); 
     for (Map.Entry<String, Integer> entryWords : words.entrySet()) { 
      String ob = entryWords.getKey() + " -> " + entryWords.getValue(); 
      output += oa + "\t" + ob + "\n"; 
     } 
    } 
    return output; 
} 

И

try { 
    if (cmd == cmdOpen) { 
     int code = chooser.showOpenDialog(myPane); 
     if (code == JFileChooser.APPROVE_OPTION) { 
      File selectedFile = chooser.getSelectedFile(); 
      fileName = selectedFile.getName(); 
      TagText tagText = new TagText(selectedFile.getAbsolutePath(), 4); 
      myPane.setText(tagText.getTagsList()); 
     } 
    } 
} 
+0

Какова взаимосвязь между строками? Если вы сортируете столбец 'LS', как будут влиять на другие столбцы? – MadProgrammer

+0

3 часа не долго ..! –

+0

Да, это ... к майке ... –

ответ

0

Там могут быть тысячи способов сделать это. Это тот, о котором я думал ..

Сначала вы можете добавить свои товары в отдельные List s в виде столбцов. И сохраните переменную для отслеживания максимального размера столбца.

List<List<String>> columns = new ArrayList<>(); 
    int maxColumnSize = 0; 
    for (Map.Entry<String, Map<String, Integer>> entry : tagMap.entrySet()) { 
     List<String> column = new ArrayList<>(); 
     column.add(entry.getKey()); 
     Map<String, Integer> words = entry.getValue(); 
     for (Map.Entry<String, Integer> entryWords : words.entrySet()) { 
      String ob = entryWords.getKey() + " -> " + entryWords.getValue(); 
      column.add(ob); 
     } 
     columns.add(column); 
     if (column.size() > maxColumnSize) { 
      maxColumnSize = column.size(); 
     } 
    } 

Затем вы можете распечатать каждый столбец, строка за строкой, как следует ..

String output = ""; 
    for (int i = 0; i < maxColumnSize; i++) { 
     for (List<String> column : columns) { 
      String s = " "; 
      if(i<column.size()){ 
       s = column.get(i); 
      } 
      output += s + "\t"; 
     } 
     output += "\n"; 
    } 

Это пример кода. Вы можете отредактировать механизм печати, чтобы сделать вашу таблицу приятнее. (например: вы можете использовать java.util.Formatter для форматирования String)

Смежные вопросы