Код: Выделить всё
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. Я сделал. Вот оно:
Код: Выделить всё
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;
}
[img]https: //i.sstatic.net/Nu8vc.png[/img]
Я хочу иметь возможность устанавливать размеры столбцов именно так, как я хочу.
Час работы с размерами, предпочтительными размерами, размерами таблиц, автоматическим изменением размера (и нет) привел меня к тому, чтобы попробовать следующее в различных комбинациях в разных частях программы. , ни один из них не дал удовлетворительных результатов, хотя извлечение пакета несколько помогло:
Код: Выделить всё
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);
(a) В частности, учитывая, что я знаю, что k — количество символов в имени файла и пути
Код: Выделить всё
columns, how can I make the contents of those columns be exactly fit their columns? (I assume
(b) Как вообще изменить размер столбца в JTable? Например, в одном столбце всегда будет написано «в». Как сделать так, чтобы столбец не был шире?
ИЗМЕНИТЬ
Спасибо. @camickr, было ЛЕГКО получить желаемый результат как в тестовой программе выше, так и в реальной программе, вывод ниже:

Подробнее здесь: https://stackoverflow.com/questions/319 ... t-contents