Как сделать так, чтобы размер столбца JTable точно (или близко) соответствовал содержимому?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать так, чтобы размер столбца JTable точно (или близко) соответствовал содержимому?

Сообщение Anonymous »

Выходные данные моей программы находятся в 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;
}
И вот результат:

[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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»