05/04/16 15:38
domenico_rizzo
Il mio problema è il seguente, vorrei che il contenuto della cella possa automaticamente riadattare l'altezza della stessa. Come potrei risolvere?
Questo è il mio codice:
Questo è il mio codice:
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Cursor; import java.awt.Font; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.UIManager; import javax.swing.border.EmptyBorder; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; /** * * @author */ public class ListaGare extends JPanel{ public static DefaultTableModel tableModel; @SuppressWarnings("OverridableMethodCallInConstructor") public ListaGare() { setLayout( new BorderLayout() ); String[] columnNames = new String[] {"Campo 1", "Campo 2", "Campo 3", "Campo 4", "Campo 5", "Campo 6"}; JTable table = new JTable(); table.setAutoCreateRowSorter(true); table.getTableHeader().setDefaultRenderer( new SimpleHeaderRenderer() ); table.getTableHeader().setCursor(new Cursor(Cursor.HAND_CURSOR)); table.getTableHeader().setReorderingAllowed(false); table.getTableHeader().setResizingAllowed(false); table.setRowSelectionAllowed(false); tableModel = new DefaultTableModel(columnNames, 0) { @Override public boolean isCellEditable(int row, int column) { return false; } @Override public Class getColumnClass(int columnIndex) { return String.class; } }; table.setModel(tableModel); //table.setRowHeight(table.getRowHeight() * 2); table.setDefaultRenderer(String.class, new MultiLineCellRenderer()); add(new JScrollPane(table), BorderLayout.CENTER); JButton back = new JButton("Torna indietro"); back.setFont(new Font(Font.DIALOG, Font.PLAIN, 35)); add(back, BorderLayout.SOUTH); } public class SimpleHeaderRenderer extends JLabel implements TableCellRenderer { @SuppressWarnings("OverridableMethodCallInConstructor") public SimpleHeaderRenderer() { setFont(new Font("Consolas", Font.BOLD, 14)); setForeground(Color.BLUE); setBorder(BorderFactory.createEtchedBorder()); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { setText(value.toString()); return this; } } class MultiLineCellRenderer extends JTextArea implements TableCellRenderer { @SuppressWarnings("OverridableMethodCallInConstructor") public MultiLineCellRenderer() { setLineWrap(true); setWrapStyleWord(true); setOpaque(true); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (isSelected) { setForeground(table.getSelectionForeground()); setBackground(table.getSelectionBackground()); } else { setForeground(table.getForeground()); setBackground(table.getBackground()); } setFont(table.getFont()); if (hasFocus) { setBorder(UIManager.getBorder("Table.focusCellHighlightBorder")); if (table.isCellEditable(row, column)) { setForeground(UIManager.getColor("Table.focusCellForeground")); setBackground(UIManager.getColor("Table.focusCellBackground")); } } else { setBorder(new EmptyBorder(1, 2, 1, 2)); } setText((value == null) ? "" : value.toString()); return this; } } }
Ultima modifica effettuata da domenico_rizzo 05/04/16 15:40
aaa