Forum - Java
- Celle di una tabella auto-adattabili al loro contenuto
domenico_rizzo (Normal User)
Pro
Messaggi: 90
Iscritto: 27/07/2015
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
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 {
@SuppressWarnings( "OverridableMethodCallInConstructor" )
public ListaGare( ) {
String [ ] columnNames
= new String [ ] { "Campo 1" ,
"Campo 2" ,
"Campo 3" ,
"Campo 4" ,
"Campo 5" ,
"Campo 6" } ; 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 ) ;
@Override
public boolean isCellEditable( int row, int column) {
return false ;
}
@Override
public Class getColumnClass( int columnIndex) {
}
} ;
table.setModel ( tableModel) ;
//table.setRowHeight(table.getRowHeight() * 2);
table.
setDefaultRenderer ( String .
class ,
new MultiLineCellRenderer
( ) ) ; }
@SuppressWarnings( "OverridableMethodCallInConstructor" )
public SimpleHeaderRenderer( ) {
setFont
( new Font ( "Consolas" ,
Font .
BOLD , 14
) ) ; setForeground
( Color .
BLUE ) ; }
@Override
public Component getTableCellRendererComponent
( JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column
) { setText( value.toString ( ) ) ;
return this ;
}
}
@SuppressWarnings( "OverridableMethodCallInConstructor" )
public MultiLineCellRenderer( ) {
setLineWrap( true ) ;
setWrapStyleWord( true ) ;
setOpaque( true ) ;
}
@Override
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 {
}
setText( ( value == null ) ? "" : value.toString ( ) ) ;
return this ;
}
}
}
Ultima modifica effettuata da domenico_rizzo il 05/04/2016 alle 17:40
domenico_rizzo (Normal User)
Pro
Messaggi: 90
Iscritto: 27/07/2015
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
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 {
@SuppressWarnings( "OverridableMethodCallInConstructor" )
public ListaGare( ) {
String [ ] columnNames
= new String [ ] { "Campo 1" ,
"Campo 2" ,
"Campo 3" ,
"Campo 4" ,
"Campo 5" ,
"Campo 6" } ; 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 ) ;
@Override
public boolean isCellEditable( int row, int column) {
return false ;
}
@Override
public Class getColumnClass( int columnIndex) {
}
} ;
table.setModel ( tableModel) ;
//table.setRowHeight(table.getRowHeight() * 2);
table.
setDefaultRenderer ( String .
class ,
new MultiLineCellRenderer
( ) ) ; }
@SuppressWarnings( "OverridableMethodCallInConstructor" )
public SimpleHeaderRenderer( ) {
setFont
( new Font ( "Consolas" ,
Font .
BOLD , 14
) ) ; setForeground
( Color .
BLUE ) ; }
@Override
public Component getTableCellRendererComponent
( JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column
) { setText( value.toString ( ) ) ;
return this ;
}
}
@SuppressWarnings( "OverridableMethodCallInConstructor" )
public MultiLineCellRenderer( ) {
setLineWrap( true ) ;
setWrapStyleWord( true ) ;
setOpaque( true ) ;
}
@Override
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 {
}
setText( ( value == null ) ? "" : value.toString ( ) ) ;
return this ;
}
}
}
Risolto usando il metodo: table.setRowHeight(numeroRiga, altezzaRiga);