1. Dashboard
  2. Artikel
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. HTML - Webmaster Forum
  2. Programmierung - Entwickler Forum
  3. Forum für alle anderen Programmiersprachen

JTable Hilfe

  • sudeki05
  • 28. Juni 2009 um 13:05
  • sudeki05
    König(in)
    Reaktionen
    1
    Beiträge
    1.435
    • 28. Juni 2009 um 13:05
    • #1

    Hallo, dann will ich auch mal wieder etwas schreiben ;)
    Ich bräuchte mal ein wenig Hilfe, es geht um eine JTable,
    ich will eine JTable meinen Programm hinzufügen mit den Überschriften
    "Nr., Name, Telefonnummer", leider bekomme ich es einfach nicht hin, bzw. bekomme keine Tabelle angezeigt, hier mal, wie mein Fenster und meine Tabelle erstellt wird:

    Code
    ...
    private static void createAndShowGui() {
        mainframe = new JFrame(programName+" | "+programVersion);
        mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
        pane = new MyNumbers();             
        pane.setOpaque(true);
        mainframe.setContentPane(pane);
    
        Color defaulWinBgColor = new Color(235,233,237);
        pane.setBackground(defaulWinBgColor);
    
    
        Dimension mainframeSize = new Dimension(721, 474);
        Dimension screenSize      = Toolkit.getDefaultToolkit().getScreenSize();
    
        int top  = ((screenSize.height-mainframeSize.height)/2)-150;
        int left = ((screenSize.width - mainframeSize.width)/2)-100;
    
        mainframe.pack();
        mainframe.setSize(mainframeSize);
        mainframe.setLocation(left, top);
        mainframe.setResizable(false);
        mainframe.setVisible(true);
    }
    ...
    Alles anzeigen

    und MyNumbers() sieht wie folgt aus:

    Code
    ...
    public MyNumbers() {
       setLayout(null); // Für absolute Positionierung
    
    
        //Name of Columns
         String[] titles = new String[]{ "Nr.", "Name", "Telefonummer", "" };
    
         final DefaultTableModel model = new DefaultTableModel( titles, 4 );
         JTable table = new JTable( model );
    
         Dimension testSize = table.getPreferredSize();
         table.setBounds(10, 100, testSize.width, testSize.height);
    
         add( new JScrollPane( table ));
    }
    ...
    Alles anzeigen

    Ich setze das Layout auf null um meine Elemente absolut positionieren zu können, das klappt auch alles bei Label, Button, MenuBars etc. problemlos, nur bekomme ich es einfach nicht hin, dass diese Table angezeigt wird. Und ich wollte euch bitten, mich vielleicht auf Fehler bezüglich der Table hinzuweisen, mach ich da irgendetwas falsch?

    Pascal


    edit: 
    Okay, das Problem ist gelöst, musste einfach (logischerweise) dem ScrollPane die Positionierung zu weisen und nicht der Tabelle.
    Aber ich hätte noch eine Frage, damit das hier nicht alles ganz umsonst ist: Kann man einer Spalte, eine bestimmte Grüße zuordnen?

    [Blockierte Grafik: http://www.publicons.de/my/pub__163,858,892,308_2.png]
    Problems with Windows? - Reboot
    Problems with UNIX? - Be Root

    3 Mal editiert, zuletzt von sudeki05 (28. Juni 2009 um 13:29)

  • synaptic
    Forum Guru
    Reaktionen
    11
    Beiträge
    10.917
    • 28. Juni 2009 um 14:06
    • #2

    jap kann man :)
    nachfolgend mal nen code für nen column resizer....
    is von unserem pauker, glaube ich...

    Java
    package gui;
    
    
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.*;
    
    
    public class ColumnResizer {
    
    
      public static void adjustColumnPreferredWidths(JTable table) {
        // strategy - get max width for cells in column and
        // make that the preferred width
        TableColumnModel columnModel = table.getColumnModel();
        for (int col = 0; col < table.getColumnCount(); col++) {
          // System.out.println ("--- col " + col + " ---");
          int maxwidth = 0;
          for (int row = 0; row < table.getRowCount(); row++) {
            TableCellRenderer rend = table.getCellRenderer(row, col);
            Object value = table.getValueAt(row, col);
            Component comp =
                rend.getTableCellRendererComponent(table,
                value,
                false,
                false,
                row,
                col);
            maxwidth = Math.max(comp.getPreferredSize().width,
                maxwidth);
          //System.out.println ("col " + col +
          //                    " pref width now " + 
          //                    maxwidth);
          } // for row
    
    
          /* this version of the width set doesn't consider the
          column header's preferred width
    
          TableColumn column = columnModel.getColumn(col);
          column.setPreferredWidth(maxwidth);
           * /
    
          /* this version of the width set considers the
          column header's preferred width too*/
          TableColumn column = columnModel.getColumn(col);
          TableCellRenderer headerRenderer = column.getHeaderRenderer();
          if (headerRenderer == null) {
            headerRenderer = table.getTableHeader().getDefaultRenderer();
          }
          Object headerValue = column.getHeaderValue();
          Component headerComp =
              headerRenderer.getTableCellRendererComponent(table,
              headerValue,
              false,
              false,
              0,
              col);
          maxwidth = Math.max(maxwidth,
              headerComp.getPreferredSize().width);
          column.setPreferredWidth(maxwidth);
        //*/
    
    
        } // for col
    
    
      }
    }
    Alles anzeigen
  • sudeki05
    König(in)
    Reaktionen
    1
    Beiträge
    1.435
    • 28. Juni 2009 um 14:42
    • #3

    Vielen dank Synaptic, ich werde mir das nachher gleich mal ansehen :)

    [Blockierte Grafik: http://www.publicons.de/my/pub__163,858,892,308_2.png]
    Problems with Windows? - Reboot
    Problems with UNIX? - Be Root

    2 Mal editiert, zuletzt von sudeki05 (28. Juni 2009 um 17:39)

  • sudeki05
    König(in)
    Reaktionen
    1
    Beiträge
    1.435
    • 28. Juni 2009 um 17:40
    • #4

    Vielen dank, funktioniert! Noch eine Frage, leider finde ich nichts genaues dazu, kann ich die Überschriften Linksbündig setzen?


    Tut mir leid wegen dem Doppelpost, aber leider wird die Änderung ja sonst nicht angezeigt ;)

    [Blockierte Grafik: http://www.publicons.de/my/pub__163,858,892,308_2.png]
    Problems with Windows? - Reboot
    Problems with UNIX? - Be Root

  • synaptic
    Forum Guru
    Reaktionen
    11
    Beiträge
    10.917
    • 28. Juni 2009 um 23:29
    • #5

    ui des mit dem text-align weiß ich net... hab mir dazu noch nie nen kopp gemacht.. sry

Tags

  • hilfe
  • button
  • color
  • background
  • bgcolor
  • layout
  • programm
  • fenster
  • frame
  • location
  • code
  • fehler
  • tabelle
  • height
  • visible
  • string
  • int
  • name
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
Zitat speichern