Как сделать размер столбца JTable точно (или близко) подходящим для содержимого?

Вывод из моей программы находится вJTextArea внутриJScrollPane, Это выглядит противно:

Created BinaryTree.java      in     I:\Netbeans OLDIES but KEEPIES\BinaryTree\src\binarytree\BinaryTree.java
Created DisplayStuff.java        in     I:\Netbeans OLDIES but KEEPIES\BinaryTree\src\binarytree\DisplayStuff.java
Created LinkedList.java      in     I:\Netbeans OLDIES but KEEPIES\BinaryTree\src\binarytree\LinkedList.java
Created Node.java        in     I:\Netbeans OLDIES but KEEPIES\BinaryTree\src\binarytree\Node.java
Created notes        in     I:\Netbeans OLDIES but KEEPIES\BinaryTree\src\binarytree\notes
Created TryBinaryTree.java       in     I:\Netbeans OLDIES but KEEPIES\BinaryTree\src\binarytree\TryBinaryTree.java

Поэтому я подумал о том, чтобы поместить вывод вJTableПредполагая, что было бы просто отрегулировать размер столбца в конце выполнения и получить результаты, которые больше похожи на электронную таблицу и, таким образом, будут более читабельными:

Я никогда не использовалJTable раньше, поэтому я попробовал простую программу, чтобы посмотреть, смогу ли я сделатьJTable совсем. Я сделал. Вот:

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;

public class TestJTable 
{
  static void init()
  {
    fraFrame = new JFrame();
    fraFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

        dftTableModel = new DefaultTableModel(0 , 4);
        tblOutput     = new JTable(dftTableModel);
        scrOutput     = new JScrollPane(tblOutput);
        colMdl        =     tblOutput.getColumnModel();

    fraFrame.add(scrOutput); // NOTE: add the SCROLL PANE, not table
    fraFrame.setVisible(true);
    fraFrame.pack();
  }

  public static void main(String[] args) 
  {
    init();
    tblOutput.doLayout();
    dftTableModel.addRow(new Object[]{"Action", "Filename", "", "Path"});
    for (int i = 0; i < 100; i++) 
    {
        String c0 = Utilities.Utilities.repeat("x", (int) (Math.random()*50));
        dftTableModel.addRow(new Object[]{((Math.sin(i)) > 0 ? "Updated" : "Created"), 
                                          c0, "in", c0});
        k = Math.max(k, c0.length());
    }
  }
  static int                  k;
  static JFrame               fraFrame ;
  static JTable               tblOutput; 
  static DefaultTableModel    dftTableModel; 
  static JScrollPane          scrOutput;
  static TableColumnModel     colMdl;
}

И вот вывод:

Я хочу иметь возможность устанавливать размеры столбцов точно так, как я хочу.

Час вращения моих колес с размерами, предпочтительными размерами, размерами таблицы, автоматическим изменением размера (и не) заставил меня попробовать следующее в различных комбинациях в разных частях программы, ни одно из которых не дало удовлетворительных результатов, хотя и вынималоpack помогло несколько

    fraFrame.setSize(1400, 600);
    tblOutput.setSize(1500,400);
    colMdl.getColumn(0).setPreferredWidth(15);
    colMdl.getColumn(1).setPreferredWidth(10*k);
    colMdl.getColumn(2).setPreferredWidth(5);
    colMdl.getColumn(3).setPreferredWidth(10*k);

Так что я должен спросить:

(а) В частности, учитывая, что я знаю, чтоk количество символов вFilename и 'Путьcolumns, how can I make the contents of those columns be exactly fit their columns? (I assumeРазмер шрифта войдет в картинку.)

(б) Как вообще изменить размер столбца вJTable? Например, одна колонка всегда будет говорить "в". Как сделать так, чтобы колонка была не шире этой?

РЕДАКТИРОВАТЬ

Благодаря @camickr было легко получить желаемый результат, как в тестовой программе выше, так и в реальной ситуации, вывод ниже:

Ответы на вопрос(1)

Ваш ответ на вопрос