У меня есть экземпляр JTable, содержащий количество строк.Столбцы в этой таблице - это экземпляры JLabel, содержащие строку в формате HTML.
Одно из моих требований заключается в том, что все данные в этих столбцах должны отображаться.Если ширина столбца (по какой-либо причине) недостаточно велика для отображения всех данных, текст следует перенести на следующую строку.В настоящее время текст просто обрезан.
Этот фрагмент кода иллюстрирует проблему:
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class TableTest {
public static void main(final String[] args) {
final JTable jTable = new JTable();
jTable.setModel(new DefaultTableModel() {
private static final long serialVersionUID = 1L;
@Override
public Object getValueAt(final int row, final int column) {
final StringBuffer sb = new StringBuffer();
sb.append("<html>");
sb.append("<font color=\"red\">this text is red</font> ");
sb.append("<font color=\"green\">this text is green!</font>");
sb.append("</html>");
return sb.toString();
}
@Override
public int getColumnCount() {
return 2;
}
@Override
public int getRowCount() {
return 2;
}
});
final JFrame jFrame = new JFrame();
jFrame.getContentPane().add(jTable);
jFrame.setSize(120, 80);
jFrame.pack();
jFrame.setTitle("Table test");
jFrame.setLocationRelativeTo(null);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setVisible(true);
}
}
Моя проблема может стать более понятной при запуске SSCCE выше.Если размер JFrame изменяется, я хочу, чтобы высота строки автоматически изменялась, чтобы можно было отобразить все содержимое JPanel.
Из-за требования HTML я не могу использовать JTextArea.
Спасибо,
Бен