Wrap text in table

This commit is contained in:
Georgy Litvinov 2020-04-20 12:55:54 +02:00
parent a19a037b52
commit 7975e49b23
4 changed files with 97 additions and 3 deletions

View file

@ -191,8 +191,8 @@ public class EditorGUI extends JFrame {
createDocPropsModel();
createCustomDocPropsModel();
tableDocStandard = new JTable();
tableDocCustom = new JTable();
tableDocStandard = new MetadataTable();
tableDocCustom = new MetadataTable();
configureTableDocStandard();
configureTableDocCustom();
@ -218,7 +218,7 @@ public class EditorGUI extends JFrame {
private void addMetadataTab(OutlineElement element) {
JPanel panelOutline = new JPanel();
JTable tableOutline = new JTable();
JTable tableOutline = new MetadataTable();
MetadataTableModel outlineTableModel = createOutlineTableModel(element);
tableModels.add(outlineTableModel);
configureTableOutline(tableOutline, outlineTableModel);

View file

@ -0,0 +1,50 @@
package pro.litvinovg.libreoffice.metadata.views;
import java.awt.Component;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.AbstractCellEditor;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.TableCellEditor;
public class MetadataCellEditor extends AbstractCellEditor implements TableCellEditor {
JTextArea comp = new JTextArea();
JTable table;
int row;
public MetadataCellEditor() {
comp.setLineWrap(true);
comp.setWrapStyleWord(true);
comp.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
super.componentResized(e);
table.setRowHeight(row, (int) (comp.getPreferredSize().getHeight()));
}
});
comp.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
super.keyTyped(e);
table.setRowHeight(row, (int) (comp.getPreferredSize().getHeight()));
}
});
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
this.table = table;
this.row = row;
comp.setText((String) value);
comp.setFont(table.getFont());
return comp;
}
public Object getCellEditorValue() {
return comp.getText();
}
}

View file

@ -0,0 +1,20 @@
package pro.litvinovg.libreoffice.metadata.views;
import javax.swing.DefaultCellEditor;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
public class MetadataTable extends JTable {
public TableCellRenderer getCellRenderer(int row, int col) {
return new MetadataTableRenderer();
}
public TableCellEditor getCellEditor(int row, int col) {
return new MetadataCellEditor();
}
}

View file

@ -0,0 +1,24 @@
package pro.litvinovg.libreoffice.metadata.views;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.TableCellRenderer;
public class MetadataTableRenderer extends JTextArea implements TableCellRenderer{
private static final long serialVersionUID = 1L;
public MetadataTableRenderer() {
setOpaque(true);
setLineWrap(true);
setWrapStyleWord(true);
}
public Component getTableCellRendererComponent(JTable table,Object value,
boolean isSelected, boolean hasFocus, int row,int column) {
this.setText(value == null ? "" : value.toString());
return this;
}
}