Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Celle di una tabella auto-adattabili al loro contenuto
Forum - Java - Celle di una tabella auto-adattabili al loro contenuto

Avatar
domenico_rizzo (Normal User)
Pro


Messaggi: 90
Iscritto: 27/07/2015

Segnala al moderatore
Postato alle 17:38
Martedė, 05/04/2016
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:
Codice sorgente - presumibilmente Java

  1. import java.awt.BorderLayout;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Cursor;
  5. import java.awt.Font;
  6. import javax.swing.BorderFactory;
  7. import javax.swing.JButton;
  8. import javax.swing.JLabel;
  9. import javax.swing.JPanel;
  10. import javax.swing.JScrollPane;
  11. import javax.swing.JTable;
  12. import javax.swing.JTextArea;
  13. import javax.swing.UIManager;
  14. import javax.swing.border.EmptyBorder;
  15. import javax.swing.table.DefaultTableModel;
  16. import javax.swing.table.TableCellRenderer;
  17.  
  18. /**
  19.  *
  20.  * @author
  21.  */
  22. public class ListaGare extends JPanel{
  23.     public static DefaultTableModel tableModel;
  24.  
  25.     @SuppressWarnings("OverridableMethodCallInConstructor")
  26.     public ListaGare() {
  27.         setLayout( new BorderLayout() );        
  28.         String[] columnNames = new String[] {"Campo 1", "Campo 2", "Campo 3", "Campo 4", "Campo 5", "Campo 6"};
  29.         JTable table = new JTable();
  30.         table.setAutoCreateRowSorter(true);
  31.         table.getTableHeader().setDefaultRenderer( new SimpleHeaderRenderer() );
  32.         table.getTableHeader().setCursor(new Cursor(Cursor.HAND_CURSOR));
  33.         table.getTableHeader().setReorderingAllowed(false);
  34.         table.getTableHeader().setResizingAllowed(false);
  35.         table.setRowSelectionAllowed(false);
  36.         tableModel = new DefaultTableModel(columnNames, 0) {
  37.             @Override
  38.             public boolean isCellEditable(int row, int column) {
  39.                return false;
  40.             }      
  41.             @Override
  42.             public Class getColumnClass(int columnIndex) {
  43.                 return String.class;
  44.             }
  45.         };
  46.         table.setModel(tableModel);
  47.         //table.setRowHeight(table.getRowHeight() * 2);
  48.         table.setDefaultRenderer(String.class, new MultiLineCellRenderer());
  49.         add(new JScrollPane(table), BorderLayout.CENTER);
  50.         JButton back = new JButton("Torna indietro");
  51.         back.setFont(new Font(Font.DIALOG, Font.PLAIN, 35));
  52.         add(back, BorderLayout.SOUTH);
  53.     }
  54.    
  55.     public class SimpleHeaderRenderer extends JLabel implements TableCellRenderer {
  56.         @SuppressWarnings("OverridableMethodCallInConstructor")
  57.         public SimpleHeaderRenderer() {
  58.             setFont(new Font("Consolas", Font.BOLD, 14));
  59.             setForeground(Color.BLUE);
  60.             setBorder(BorderFactory.createEtchedBorder());
  61.         }
  62.         @Override
  63.         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
  64.             setText(value.toString());
  65.             return this;
  66.         }
  67.     }
  68.     class MultiLineCellRenderer extends JTextArea implements TableCellRenderer {
  69.         @SuppressWarnings("OverridableMethodCallInConstructor")
  70.         public MultiLineCellRenderer() {
  71.             setLineWrap(true);
  72.             setWrapStyleWord(true);
  73.             setOpaque(true);
  74.         }
  75.         @Override
  76.         public Component getTableCellRendererComponent(JTable table, Object value,
  77.                 boolean isSelected, boolean hasFocus, int row, int column) {
  78.             if (isSelected) {
  79.                 setForeground(table.getSelectionForeground());
  80.                 setBackground(table.getSelectionBackground());
  81.             } else {
  82.                 setForeground(table.getForeground());
  83.                 setBackground(table.getBackground());
  84.             }
  85.             setFont(table.getFont());
  86.             if (hasFocus) {
  87.                 setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
  88.                 if (table.isCellEditable(row, column)) {
  89.                     setForeground(UIManager.getColor("Table.focusCellForeground"));
  90.                     setBackground(UIManager.getColor("Table.focusCellBackground"));
  91.                 }
  92.             } else {
  93.                 setBorder(new EmptyBorder(1, 2, 1, 2));
  94.             }
  95.             setText((value == null) ? "" : value.toString());
  96.             return this;
  97.         }
  98.     }
  99. }


Ultima modifica effettuata da domenico_rizzo il 05/04/2016 alle 17:40
PM Quote
Avatar
domenico_rizzo (Normal User)
Pro


Messaggi: 90
Iscritto: 27/07/2015

Segnala al moderatore
Postato alle 18:41
Martedė, 05/04/2016
Testo quotato

Postato originariamente da 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:
Codice sorgente - presumibilmente Java

  1. import java.awt.BorderLayout;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Cursor;
  5. import java.awt.Font;
  6. import javax.swing.BorderFactory;
  7. import javax.swing.JButton;
  8. import javax.swing.JLabel;
  9. import javax.swing.JPanel;
  10. import javax.swing.JScrollPane;
  11. import javax.swing.JTable;
  12. import javax.swing.JTextArea;
  13. import javax.swing.UIManager;
  14. import javax.swing.border.EmptyBorder;
  15. import javax.swing.table.DefaultTableModel;
  16. import javax.swing.table.TableCellRenderer;
  17.  
  18. /**
  19.  *
  20.  * @author
  21.  */
  22. public class ListaGare extends JPanel{
  23.     public static DefaultTableModel tableModel;
  24.  
  25.     @SuppressWarnings("OverridableMethodCallInConstructor")
  26.     public ListaGare() {
  27.         setLayout( new BorderLayout() );        
  28.         String[] columnNames = new String[] {"Campo 1", "Campo 2", "Campo 3", "Campo 4", "Campo 5", "Campo 6"};
  29.         JTable table = new JTable();
  30.         table.setAutoCreateRowSorter(true);
  31.         table.getTableHeader().setDefaultRenderer( new SimpleHeaderRenderer() );
  32.         table.getTableHeader().setCursor(new Cursor(Cursor.HAND_CURSOR));
  33.         table.getTableHeader().setReorderingAllowed(false);
  34.         table.getTableHeader().setResizingAllowed(false);
  35.         table.setRowSelectionAllowed(false);
  36.         tableModel = new DefaultTableModel(columnNames, 0) {
  37.             @Override
  38.             public boolean isCellEditable(int row, int column) {
  39.                return false;
  40.             }      
  41.             @Override
  42.             public Class getColumnClass(int columnIndex) {
  43.                 return String.class;
  44.             }
  45.         };
  46.         table.setModel(tableModel);
  47.         //table.setRowHeight(table.getRowHeight() * 2);
  48.         table.setDefaultRenderer(String.class, new MultiLineCellRenderer());
  49.         add(new JScrollPane(table), BorderLayout.CENTER);
  50.         JButton back = new JButton("Torna indietro");
  51.         back.setFont(new Font(Font.DIALOG, Font.PLAIN, 35));
  52.         add(back, BorderLayout.SOUTH);
  53.     }
  54.    
  55.     public class SimpleHeaderRenderer extends JLabel implements TableCellRenderer {
  56.         @SuppressWarnings("OverridableMethodCallInConstructor")
  57.         public SimpleHeaderRenderer() {
  58.             setFont(new Font("Consolas", Font.BOLD, 14));
  59.             setForeground(Color.BLUE);
  60.             setBorder(BorderFactory.createEtchedBorder());
  61.         }
  62.         @Override
  63.         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
  64.             setText(value.toString());
  65.             return this;
  66.         }
  67.     }
  68.     class MultiLineCellRenderer extends JTextArea implements TableCellRenderer {
  69.         @SuppressWarnings("OverridableMethodCallInConstructor")
  70.         public MultiLineCellRenderer() {
  71.             setLineWrap(true);
  72.             setWrapStyleWord(true);
  73.             setOpaque(true);
  74.         }
  75.         @Override
  76.         public Component getTableCellRendererComponent(JTable table, Object value,
  77.                 boolean isSelected, boolean hasFocus, int row, int column) {
  78.             if (isSelected) {
  79.                 setForeground(table.getSelectionForeground());
  80.                 setBackground(table.getSelectionBackground());
  81.             } else {
  82.                 setForeground(table.getForeground());
  83.                 setBackground(table.getBackground());
  84.             }
  85.             setFont(table.getFont());
  86.             if (hasFocus) {
  87.                 setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
  88.                 if (table.isCellEditable(row, column)) {
  89.                     setForeground(UIManager.getColor("Table.focusCellForeground"));
  90.                     setBackground(UIManager.getColor("Table.focusCellBackground"));
  91.                 }
  92.             } else {
  93.                 setBorder(new EmptyBorder(1, 2, 1, 2));
  94.             }
  95.             setText((value == null) ? "" : value.toString());
  96.             return this;
  97.         }
  98.     }
  99. }




Risolto usando il metodo: table.setRowHeight(numeroRiga, altezzaRiga);

PM Quote