Можно ли взглянуть на ваш код?
Например, в этом простейшем примере ничего не упаковано:
public class TableTest {
public static void main(String[] args) {
JFrame frm = new JFrame();
TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() {
return 10;
}
public int getRowCount() {
return 10;
}
public Object getValueAt(int row, int col) {
return new String(
"<a href=\"127.0.0.1\">row*col*1000000000</a>");
}
};
JTable table = new JTable(dataModel);
table.getColumnModel().getColumn(2).setMaxWidth(120);
table.getColumnModel().getColumn(2).setPreferredWidth(120);
table.getColumnModel().getColumn(2).setMinWidth(120);
frm.getContentPane().add(table);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setPreferredSize(new Dimension(300, 300));
frm.pack();
frm.setVisible(true);
}
}
Отредактировано @ latata
Вы можете попытаться создать свой собственный CellRenderer и поэкспериментировать с ним, применяя к нужному столбцу:
table.getColumnModel().getColumn(0).setCellRenderer(new NonWrappedCellRenderer());
Рендерер может выглядеть так:
class NonWrappedCellRenderer extends JTextArea implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(
JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
this.setText((String)value);
this.setLineWrap(false);
return this;
}
}
Здесь строка не будет перенесена, потому что JTextArea по умолчанию использует
setLineWrap(false)
Проблема в том, что JTextArea не может правильно отображать HTML-теги, как я вижу. Так что вы решите это как-нибудь. Вы можете попробовать JTextPane или что-то еще, что может иметь дело с тегами и проверить, есть ли у этого свойства обертывания.
В качестве альтернативы вы можете вычислить метрики шрифта, ширину ячейки и обрезать текст вручную.