Probleme bei sortieren von jTable

K

KlemensyXYZ

Gast
Hallo,

ich möchte folgende Tabelle für eine Rangliste nach der Höhe der Punkte sortieren:
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Rangliste.java
 *
 * Created on 02.11.2011, 17:43:49
 */

package rangliste;

import java.awt.Image;
import java.util.Comparator;

import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

/**
 *
 * @author Klemens
 */
@SuppressWarnings("serial")
public class Rangliste extends javax.swing.JFrame {
	
	String Sp1Name;	//bekommen noch Werte zugeordnet
	int SP1Punkte;
	String Sp1Datum;
	String Sp2Name;
	int SP2Punkte;
	String Sp2Datum;
	String Sp3Name;
	int SP3Punkte;
	String Sp3Datum;
	String Sp4Name;
	int SP4Punkte;
	String Sp4Datum;
	String Sp5Name;
	int SP5Punkte;
	String Sp5Datum;
	String Sp6Name;
	int SP6Punkte;
	String Sp6Datum;
	String Sp7Name;
	int SP7Punkte;
	String Sp7Datum;
	String Sp8Name;
	int SP8Punkte;
	String Sp8Datum;
	String Sp9Name;
	int SP9Punkte;
	String Sp9Datum;
	String Sp10Name;
	int SP10Punkte;
	String Sp10Datum;

    /** Creates new form Rangliste */
    public Rangliste() {
    	super("Rangliste");
        java.net.URL iconUrl = this.getClass().getResource("/rangliste/Chart.png");
    	Image img = getToolkit().getImage(iconUrl); 
    	setIconImage(img);
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        SchliessenButton = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/rangliste/Chart.png"))); // NOI18N

        jLabel2.setFont(new java.awt.Font("Tahoma", 0, 36));
        jLabel2.setText("Rangliste");

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {new Integer(1), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(2), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(3), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(4), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(5), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(6), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(7), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(8), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(9), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(10), Sp1Name, SP1Punkte, Sp1Datum}
            },
            new String [] {
                "Nr.", "Name", "Punkte", "Datum"
            }
        ) {
            @SuppressWarnings("rawtypes")
			Class[] types = new Class [] {
                java.lang.Integer.class, java.lang.String.class, java.lang.Integer.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false
            };

            @SuppressWarnings("rawtypes")
			public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jTable1.setColumnSelectionAllowed(true);
        jScrollPane1.setViewportView(jTable1);
        
        TableRowSorter<TableModel> rowSorter = new TableRowSorter<TableModel>( model ); //Wie bekommt man hier das richtige Model rein?
        jTable1.setRowSorter( rowSorter );
        rowSorter.setComparator( 2, new Comparator<Integer>() 
        {   
        	public int compare( Integer Punkte1, Integer Punkte2 )
        	{     
        		int i1 = Punkte1, i2 = Punkte2;
        		return (Integer.bitCount( i1 ) - Integer.bitCount( i2 ));
        	} 
        } ); 

        SchliessenButton.setText("Schließen");
        SchliessenButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                SchliessenButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addGap(18, 18, 18)
                        .addComponent(jLabel2))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
                    .addComponent(SchliessenButton, javax.swing.GroupLayout.Alignment.TRAILING))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jLabel1))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(19, 19, 19)
                        .addComponent(jLabel2)))
                .addGap(18, 18, 18)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(SchliessenButton)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    private void SchliessenButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                 
        // TODO add your handling code here:
    	this.dispose();
    }                                                

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Rangliste().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton SchliessenButton;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration

}

doch wie bekomme ich (siehe Kommentar im Quelltext) hier:
Code:
TableRowSorter<TableModel> rowSorter = new TableRowSorter<TableModel>( model );
in meine Quelltext das Model rein?

ist der Rest sonst richtig?

Und kann man eine Tabelle bei mehr als 10 Einträgen irgendwie automatisch größer bekommen?

Danke
 

eRaaaa

Top Contributor
Du solltest zunächst anfangen mehrere Klassen zu verwendne und vor allem ins mvc einlesen. DU hast hier alles wild gemischt in einer Klasse, kein WUnder dass du dir dann irgendwann die Frage stellst mit dem Model.
Java:
 jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {new Integer(1), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(2), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(3), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(4), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(5), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(6), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(7), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(8), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(9), Sp1Name, SP1Punkte, Sp1Datum},
                {new Integer(10), Sp1Name, SP1Punkte, Sp1Datum}
            },
            new String [] {
                "Nr.", "Name", "Punkte", "Datum"
            }
        )

Da ist den Model. Erster Anfang wäre sicherlich das DefaultTableModel nicht direkt als anonyme innere Klasse zu verwenden, sondern herauszuziehen aus der setModel Methode.
Sp1Name usw haben in der Klasse "Frame" bzw generell in grafischen Klassen eig. nichts zu suchen, und Namenskonventionen hältst du auch nicht ein ;(
 
K

KlemensyXYZ

Gast
Da ist den Model. Erster Anfang wäre sicherlich das DefaultTableModel nicht direkt als anonyme innere Klasse zu verwenden, sondern herauszuziehen aus der setModel Methode.

das Model kommt (fast) genau so frisch aus dem GUI Generator von Netbeans :pueh:
wie sollte das denn aussehen?

Sp1Name usw haben in der Klasse "Frame" bzw generell in grafischen Klassen eig. nichts zu suchen, und Namenskonventionen hältst du auch nicht ein ;(

wie soll ich denn die Werte von Variablen sonst in die Tabelle bekommen?
das mit den Namen kann man ja noch ändern:autsch:
 
Zuletzt bearbeitet von einem Moderator:

Sunchezz

Bekanntes Mitglied
wie soll ich denn die Werte von Variablen sonst in die Tabelle bekommen?
das mit den Namen kann man ja noch ändern

Zum Beispiel in dem du wie eRaaaa vorgeschlagen hat, das Model in eine extra Klasse extrahierst und dann über addRow() oder sonst was deinen Inhalt hinzufügst.
Dann hast du auch nich nur ein anonymes Model und kannst somit auch dein RowSorter hinzufügen.

How to Use Tables (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
könnte hilfreich sein ;)

Automatisch größer bekommen?
setPreferredSize()
oder einfach ne ScrollPane benutzen??
 
K

KlemensyXYZ

Gast
Zum Beispiel in dem du wie eRaaaa vorgeschlagen hat, das Model in eine extra Klasse extrahierst und dann über addRow() oder sonst was deinen Inhalt hinzufügst.
Dann hast du auch nich nur ein anonymes Model und kannst somit auch dein RowSorter hinzufügen.
schön und gut :bahnhof: könntest du mir das auch als quelltext zeigen?
Automatisch größer bekommen?
setPreferredSize()
oder einfach ne ScrollPane benutzen??

mit größer meinte ich mehr Zeilen hinzufügen
 
Zuletzt bearbeitet von einem Moderator:

Sunchezz

Bekanntes Mitglied
Da dein Google nicht zu funktionieren schein, bitte schön ;)

http://www.java-forum.org/java-basics-anfaenger-themen/69990-eigenes-tablemodel.html
How to Use Tables (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
TableModel Example : TableSwing JFCJava
JTable and TableModel: FAQ


Und auch zum zweiten:
DefaultTableModel (Java 2 Platform SE v1.4.2)

Bitte gebe dir wenigstens ein bischen Mühe und lies etwas -.-
Google gibt zu dem Thema mehr als genug her!
lernt sich auch besser !!!

Vor allem setze dich mal mit der API auseinander, normalerweise steht da alles drinne!

Wenn du etwas konkretes nich verstehst, sags, aber ich schreib nich das halbe Programm für dich -.-
Ich helfe aber ansonsten gerne ;)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin Probleme bei Stage.close() AWT, Swing, JavaFX & SWT 23
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
E repaint Probleme AWT, Swing, JavaFX & SWT 13
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
S GridBagLayout - Probleme mit Bilderanzeige AWT, Swing, JavaFX & SWT 3
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
J Probleme mit idividueller Tablecell AWT, Swing, JavaFX & SWT 0
D JavaFX Probleme beim nachtäglichen hinzufügen der jfx dependency AWT, Swing, JavaFX & SWT 7
J Probleme mit InputDialog AWT, Swing, JavaFX & SWT 4
D JavaFX TextArea Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 1
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
pph080560 JavaFX Probleme mit FX AWT, Swing, JavaFX & SWT 3
M Probleme mit OpenJDK AWT, Swing, JavaFX & SWT 6
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
L JavaFX Probleme beim Installieren JavaFX11 / JavaFX12 -- Eclipse 2019-03 AWT, Swing, JavaFX & SWT 3
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
H JFreeChart - DemoDataSetFactory Probleme AWT, Swing, JavaFX & SWT 1
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
A Probleme mit gridheight (GridBagLayout) AWT, Swing, JavaFX & SWT 6
U Opaque Probleme AWT, Swing, JavaFX & SWT 3
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
F JavaFX Probleme beim automatischen Konvertieren AWT, Swing, JavaFX & SWT 4
S Probleme mit JComboboxen(?) AWT, Swing, JavaFX & SWT 18
S Swing Probleme mit MigLayout AWT, Swing, JavaFX & SWT 2
C Probleme mit createImage AWT, Swing, JavaFX & SWT 1
J Probleme mit contex Menu (javafx) AWT, Swing, JavaFX & SWT 1
J Probleme bei GameofLife AWT, Swing, JavaFX & SWT 24
S JavaFx - Button ActionEvent Probleme AWT, Swing, JavaFX & SWT 3
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 0
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 5
J LayoutManager GridBagLayout, probleme mit Anordnung von Objekten AWT, Swing, JavaFX & SWT 6
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
D Swing Probleme mit dem Resizing AWT, Swing, JavaFX & SWT 7
G Probleme mit TextArea AWT, Swing, JavaFX & SWT 5
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
K Probleme beim JPasswordField AWT, Swing, JavaFX & SWT 11
G Cardlayout Refresh Probleme AWT, Swing, JavaFX & SWT 2
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
M JButton Probleme AWT, Swing, JavaFX & SWT 14
L Probleme mit Programm AWT, Swing, JavaFX & SWT 13
blazingblade komischerweise probleme mit jtextfield.gettext() AWT, Swing, JavaFX & SWT 9
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
Sin137 LayoutManager GridBagLayout Probleme AWT, Swing, JavaFX & SWT 6
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
C Java FX Probleme beim Schließen einer Stage AWT, Swing, JavaFX & SWT 11
M Swing JProgressbar und Outoputstream probleme AWT, Swing, JavaFX & SWT 2
S Swing Probleme mit transparenz der Hintergrundfarbe und JRadioButtons AWT, Swing, JavaFX & SWT 2
Z Probleme mit JPanel's AWT, Swing, JavaFX & SWT 6
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
A Swing Probleme mit JScrollPane AWT, Swing, JavaFX & SWT 6
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
J JavaFX JavaFX Probleme bei der Anzeige von Text AWT, Swing, JavaFX & SWT 18
A Probleme mit TilledBorder("***") AWT, Swing, JavaFX & SWT 4
F Bildschirmschoner Probleme mit Preview AWT, Swing, JavaFX & SWT 8
X Panel Probleme (Tetris) AWT, Swing, JavaFX & SWT 8
N JTable probleme AWT, Swing, JavaFX & SWT 5
B Probleme bei ImageIO.read (?!) AWT, Swing, JavaFX & SWT 9
P JFrame Location-/Size-Probleme AWT, Swing, JavaFX & SWT 5
U LayoutManager Probleme mit Layouts AWT, Swing, JavaFX & SWT 5
C 3 kleine Probleme... AWT, Swing, JavaFX & SWT 13
L NullpointerException und Probleme mit repaint() AWT, Swing, JavaFX & SWT 11
A Probleme mit 2 JFrames in einem Programm AWT, Swing, JavaFX & SWT 7
K LayoutManager Probleme mit 2 Komponenten AWT, Swing, JavaFX & SWT 9
C Probleme mit Buttons und einem ActionListener AWT, Swing, JavaFX & SWT 2
M Probleme mit Verkleinern eines GUI AWT, Swing, JavaFX & SWT 7
B Swing label.setText() macht probleme AWT, Swing, JavaFX & SWT 5
B ImageIcon - Probleme mit dem Dateipfad AWT, Swing, JavaFX & SWT 5
H JTree Probleme AWT, Swing, JavaFX & SWT 9
F Probleme mit (Graphics g) II AWT, Swing, JavaFX & SWT 4
F Probleme mit (Graphics g) AWT, Swing, JavaFX & SWT 3
K 2D-Grafik .GIF macht mir Probleme AWT, Swing, JavaFX & SWT 14
B Probleme bei Sortierung einer Tabelle mit DefaultTableModel AWT, Swing, JavaFX & SWT 6
T JTable Graphik probleme AWT, Swing, JavaFX & SWT 3
H GridBagLayout macht Probleme... AWT, Swing, JavaFX & SWT 4
vandread Swing Probleme mit jTextField im zusammenspiel mit einem Einblendeffekt (inkl. KSKB) AWT, Swing, JavaFX & SWT 6
S Swing Lauftext Performance Probleme, in größerer Anwendung AWT, Swing, JavaFX & SWT 6
B Infolabel Probleme mit Paint() ? AWT, Swing, JavaFX & SWT 8
P Probleme mit setIconImage AWT, Swing, JavaFX & SWT 8
U Swing Probleme mit Asynchronen Prozessen und Swing: AWT, Swing, JavaFX & SWT 3
das-mo Probleme mit GridBagLayout AWT, Swing, JavaFX & SWT 6
N 2D-Grafik 2 Probleme beim zeichnen AWT, Swing, JavaFX & SWT 18
L Probleme mit JPanel AWT, Swing, JavaFX & SWT 8
D Probleme bei Übertrag von ArrayList in Jtable AWT, Swing, JavaFX & SWT 2
G kleinere Probleme mit GUI AWT, Swing, JavaFX & SWT 2
G Mehrere Probleme mit Java's GUI AWT, Swing, JavaFX & SWT 6
M Swing Erste Schritte mit der GUI, viele Probleme AWT, Swing, JavaFX & SWT 36
J GUI-Aktualisierungs-Probleme AWT, Swing, JavaFX & SWT 4
B Performance-Probleme AWT, Swing, JavaFX & SWT 17
I Probleme if-Anweisung AWT, Swing, JavaFX & SWT 26

Ähnliche Java Themen


Oben