Hallo,
ich bekomme folgendes Beispiel nicht zum laufen, Fehler:
No enclosing instance of type JTableDemo is accessible. Must qualify the allocation with an enclosing instance of type JTableDemo (e.g. x.new A() where x is an instance of JTableDemo).
Könnt ihr mir sagen was ich falsch mache?
Danke und Gruss
Flex
ich bekomme folgendes Beispiel nicht zum laufen, Fehler:
No enclosing instance of type JTableDemo is accessible. Must qualify the allocation with an enclosing instance of type JTableDemo (e.g. x.new A() where x is an instance of JTableDemo).
Java:
package jtable;
import java.awt.*;
import java.util.Random;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.Component;
import java.awt.Point;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class JTableDemo {
static Color LiteBlue = new Color(160, 200, 255);
static DefaultTableModel tmodel;
public static void main( String[] args ){
// Ein TableModel mit zufälligen Werten füllen
TableModel model = randomModel();
// Die JTable initialisieren
JTable table = new JTable( model );
table.setDefaultRenderer( Point.class, new PointRender());
// Der TableRowSorter wird die Daten des Models sortieren
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>();
// Der Sorter muss dem JTable bekannt sein
table.setRowSorter( sorter );
// ... und der Sorter muss wissen, welche Daten er sortieren muss
sorter.setModel( model );
JFrame frame = new JFrame( "Demo" );
frame.getContentPane().add( new JScrollPane( table ) );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.pack();
frame.setVisible( true );
}
// Diese Methode generiert ein TableModel mit zufälligen Werten
private static TableModel randomModel(){
Object[] names = { "String", "Integer", "Point" };
tmodel = new DefaultTableModel( names, 0 ) {
@Override
public Class<?> getColumnClass( int column ) {
switch( column ){
case 0: return String.class;
case 1: return Integer.class;
case 2: return Point.class;
default: return Object.class;
}
}
};
Random random = new Random();
for( int i = 0; i < 22; i++ ){
Object[] row = {
randomString( random ),
randomInt( random ),
new Point( randomInt( random ), randomInt( random ))
};
tmodel.addRow( row );
}
return tmodel;
}
// Generiert einen zufälligen String
private static String randomString( Random random ){
int length = random.nextInt( 4 ) + 4;
StringBuilder result = new StringBuilder( length );
for( int i = 0; i < length; i++ )
result.append( (char)('a' + random.nextInt( 'z' - 'a' + 1 )));
return result.toString();
}
// Generiert einen zufälligen int
private static int randomInt( Random random ){
return random.nextInt( 1000 ) + 1;
}
//Ein Renderer für java.awt.Point
public class PointRender extends DefaultTableCellRenderer{
private static final long serialVersionUID = 1L;
@Override
public Component getTableCellRendererComponent( JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column ) {
Point point = (Point)value;
String text = point.x + " / " + point.y;
return super.getTableCellRendererComponent( table, text, isSelected,
hasFocus, row, column );
}
}
}
Könnt ihr mir sagen was ich falsch mache?
Danke und Gruss
Flex