Announcement

Collapse
No announcement yet.

JTable Column verstecken

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JTable Column verstecken

    Hallo zusammen

    habe da ein problem, ich versuche nun schon seit einer weile eine Column
    von einem JTable zu verstecken in dem ich width der column auf 0 setze
    dies will jedoch einfach nicht funktionieren!

    Ich habe eine Methode der ich ein Jtable übergeben kann, diese List dann
    gewünschte werte aus einer DB in dieses Table, ausserdem muss man einen
    vector mit den gewünschten Felder mit übergeben, nun wenn im Vector
    "" steht muss ich die Column ausblenden.

    Mein bisheriger Code der nicht funktionieren möchte:

    Code:
    yourJTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    	    
    
    	    for (int i = 0;i<columnTitles.size();i++){
    	    	if (columnTitles.get(i)==""){
    	        	yourJTable.getColumn(yourJTable.getColumnModel().getColumn(i+1)).setMaxWidth(0);
    	        	yourJTable.getColumn(yourJTable.getColumnModel().getColumn(i+1)).setMinWidth(0);
    	    	}
    	    }
    Danke schon mal für tipps

  • #2
    columnTitles.get(i)==""
    Java .....String......vergleichen.....
    Christian

    Comment


    • #3
      ?
      ist nicht inhalt meiner frage :-)

      Comment


      • #4
        ????

        Nun, wenn es keine Rolle spielt, dass man in Java String nicht mit == vergleichen kann......und somit schon das if falsch ist.....ok
        Christian

        Comment


        • #5
          Beim debuggen geht er jedoch in die if anweisung also geht von meiner sicht her der Verlgeich String == ""?
          ergo habe nun den vergleich java üblich mit
          Code:
          if (columnTitles.get(i).equals(""))
          gemacht es funktioniert jedoch immer noch nicht,

          er wirft mir bei der Zeile
          Code:
          yourJTable.getColumn(yourJTable.getColumnModel().getColumn(i)).setMaxWidth(0);
          eine exception
          Code:
          java.lang.IllegalArgumentException: Identifier not found
          	at javax.swing.table.DefaultTableColumnModel.getColumnIndex(Unknown Source)
          	at javax.swing.JTable.getColumn(Unknown Source)
          	at FBDBPackage.FBDBLayer.FillJTable(FBDBLayer.java:251)
          	at JTableTest.NewSwingApp$2.actionPerformed(NewSwingApp.java:99)
          	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
          	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
          	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
          	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
          	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
          	at java.awt.Component.processMouseEvent(Unknown Source)
          	at javax.swing.JComponent.processMouseEvent(Unknown Source)
          	at java.awt.Component.processEvent(Unknown Source)
          	at java.awt.Container.processEvent(Unknown Source)
          	at java.awt.Component.dispatchEventImpl(Unknown Source)
          	at java.awt.Container.dispatchEventImpl(Unknown Source)
          	at java.awt.Component.dispatchEvent(Unknown Source)
          	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
          	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
          	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
          	at java.awt.Container.dispatchEventImpl(Unknown Source)
          	at java.awt.Window.dispatchEventImpl(Unknown Source)
          	at java.awt.Component.dispatchEvent(Unknown Source)
          	at java.awt.EventQueue.dispatchEvent(Unknown Source)
          	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
          	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
          	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
          	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
          	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
          	at java.awt.EventDispatchThread.run(Unknown Source)

          Comment


          • #6
            also geht von meiner sicht her der Verlgeich String == ""?
            Sorry, aber es ist völlig induskutabel darüber zu diskutieren wie Stringvergleiche in Java gemacht werden müssen. String ist in Java eine Klasse und kein nativer Datentyp. Aus diesem Grunde muss hier eine Methode aufgerufen werden. Da Java keine Überlagerung von Parametern kennt, kann auch == für einen String nicht überschrieben werden. Ausnahme (+) für Stringverkettung.

            Als Methoden ist equalsIgnoreCase zu empfehlen.

            Mit einem == wird ein Vergleich der Objekte durchgeführt und nicht ein Stringvergleich.
            Christian

            Comment


            • #7
              Ok

              Aber nun zurück zu meinem Problem, weist du was da falsch ist?

              Comment


              • #8
                Zu dem weiteren Problem:

                yourJTable.getColumnModel().getColumn(i) gibt ein TableColumn zurück, was du getColumn gibt um ein TableColumn zu erhalten??
                Christian

                Comment


                • #9
                  sry

                  verstehe ich jetzt nicht recht?

                  Comment


                  • #10
                    TableColumn col = yourJTable.getColumnModel().getColumn(i);
                    col.setMaxWidth(0);
                    ....


                    oder

                    yourJTable.getColumnModel().getColumn(i).setMaxWid th(0);


                    Die Columns beginnen bei 0
                    Christian

                    Comment


                    • #11
                      Ok danke, nun kommt die Exception nich mehr, jedoch wird die Column immer noch nich auf width 0 gesetzt.

                      Ich ruf auch die fire methode auf.

                      Comment


                      • #12
                        Ich ruf auch die fire methode auf.
                        Wozu? Wer sollte da warum feuern??

                        setPreferredWidth
                        setMinWidth

                        könnte man setzen und dann ein repaint
                        Christian

                        Comment


                        • #13
                          Ah ok das
                          fireTableDataChanged(); benötigt man nur um dem Table zu sagen das es nun neue Daten im model hat, nehme ich nun mal an.

                          Ok nun Funktionierts, danke für deine unterstützung und nerven :-)

                          Folgendes hab ich geändert.

                          1. Daten in Model einlesen
                          2. mit fireTableDataChanged(); "dem Table sagen das es neue Daten hat".

                          und dann:

                          Code:
                           for (int i = 0;i<columnTitles.size();i++){
                          	    	if (columnTitles.get(i).equalsIgnoreCase("")){
                          	        	yourJTable.getColumnModel().getColumn(i).setMaxWidth(0);
                          	        	yourJTable.getColumnModel().getColumn(i).setMinWidth(0);
                          	        	yourJTable.getColumnModel().getColumn(i).setWidth(0);
                          	        	yourJTable.getColumnModel().getColumn(i).setPreferredWidth(0);
                          	        	
                          	    	}
                          	    }
                          yourJTable.repaint();

                          Comment


                          • #14
                            fireTableDataChanged(); benötigt man nur um dem Table zu sagen das es nun neue Daten im model hat, nehme ich nun mal an.
                            joo, hat aber nix mit dem setzen der Breite zu tun....
                            Christian

                            Comment


                            • #15
                              jap das hab ich dann auch bemerkt :-)

                              Der haupsächliche Fehler war das ich die fire methoden erst nach dem setzen von width aufgerufen habe.

                              Also das Table hatte ja zu diesem Zeitpunkt noch gar keine Columns und Daten :-)

                              Comment

                              Working...
                              X