tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
4173
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Kalmuecke Kalmuecke ist offline Mitglied
    Registriert seit
    Jun 2007
    Beiträge
    17
    Moin moin,

    ich habe jetzt schon einiges über die Layoutmanager gelesen und wie schön sie eigentlich die Fensterelemente (Buttons, Labels, etc.) automatisch beim Maximieren oder Minimieren an die Fenstergröße anpassen.
    Leider klappt das mit meinem JTable nicht.
    Ich habe ein JPanel angelegt und da hinein mein JScrollpane. Das JScrollpane enthält mein JTable.

    Aber leider bleibt die Größe meiner Tabelle immer die gleiche. Es werden die Spalten zusammengeschoben, so daß die Spaltenüberschriften nicht komplett gelesen werden können und die Größe verändert sich auch nicht beim Maximieren oder Minimieren!

    Was mache ich da falsch
    Hier noch ein kleiner Codeschnipsel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
    /* Titel setzen */
            this.setTitle(progName);
            this.setSize(new Dimension(800, 600));
            Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
            int xpos = (screenSize.width - getWidth()) / 2;
            int ypos = (screenSize.height - getHeight()) / 2;
            this.setLocation(xpos, ypos);
            this.setLayout(new FlowLayout() );
     
            /* Menü erzeugen WICHTIG: muss vor setVisible geschehen, sonst wird Menü nicht angezeigt */
            this.createMenu();
            
            /* wenn Fenster geschlossen wird, wird auch Anwendung beendet */
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            /* Panel für die Übersichts-Tabelle */
            JPanel tablePanel = new JPanel(new GridBagLayout());
            JTable tableOverview    = new JTable(new eBayOrgaMainDTableModel());
            JTableHeader header     = tableOverview.getTableHeader();
            tableOverview.getModel().addTableModelListener(this);
            header.setBackground(Color.GRAY);
            header.setForeground(Color.white);
            /*Scrollbar für die Übersichts-Tabelle */
            JScrollPane scrollPane = new JScrollPane(tableOverview);
            //scrollPane.setPreferredSize(this.getSize());
            
            tablePanel.add(scrollPane);
            
            /* Panel für Übersichts-Tabelle auf das Frame legen */
            this.add(tablePanel);
            /* Fenster maximieren */
            this.setExtendedState(MAXIMIZED_BOTH);
     
            /* Programm-Icon setzen */
            //TODO: this.setIconImage(getToolkit().getImage(this.getClass().getResource("/Mediafiles/" + "icon.jpg")));
            /* visible setzen sonst sehen wir das Fenster gar nicht */
            this.setVisible(true);

    Danke im voraus für eure Hilfe!
    Gruss
    Muecke
     

  2. #2
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Statt this.setLocation(xpos, ypos); kannst du auch setLocationRelativeTo(null); nehmen, dann musst du da nicht rumrechnen.

    Versuch mal statt:
    JPanel tablePanel = new JPanel(new GridBagLayout());
    lieber
    JPanel tablePanel = new JPanel(new BorderLayout());

    Nen GridBagLayout ist ja unnötig bei nur einer Komponente.
     

  3. #3
    Kalmuecke Kalmuecke ist offline Mitglied
    Registriert seit
    Jun 2007
    Beiträge
    17
    Zitat Zitat von zeja Beitrag anzeigen
    Statt this.setLocation(xpos, ypos); kannst du auch setLocationRelativeTo(null); nehmen, dann musst du da nicht rumrechnen.

    Versuch mal statt:
    JPanel tablePanel = new JPanel(new GridBagLayout());
    lieber
    JPanel tablePanel = new JPanel(new BorderLayout());

    Nen GridBagLayout ist ja unnötig bei nur einer Komponente.
    Danke für den Hinweis mit set LocationRelative!

    Aber leider funktioniert das BorderLayout in meinem JFrame auch nicht! Die Tabelle bleibt immer noch "steif" in seiner Größe und verändert diese nicht.
     

  4. #4
    Stigma Stigma ist offline Mitglied Brokat
    Registriert seit
    Oct 2007
    Ort
    Lübeck
    Beiträge
    412
    Hast du es auch ins CENTER gesetzt?

    Sollten weitere Probleme sein oder immer noch das selbe dan poste doch mal ausführabren Code. Es kann nehmlich sein das du ein Borderlaoyut in ein anderres Layout hast was alles zunichte macht.
     

  5. #5
    dandiii dandiii ist offline Mitglied
    Registriert seit
    Jun 2007
    Beiträge
    12
    mit GridLayout(1,1) funktionierts
     

Ähnliche Themen

  1. JTree in JScrollPane: JScrollPane automatisch anpassen
    Von Guadrion im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 14.06.10, 09:12
  2. JTable Größe an Frame automatisch anpassen
    Von RalU im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 30.01.10, 14:52
  3. Fenstergröße anpassen
    Von Slazer im Forum C/C++
    Antworten: 9
    Letzter Beitrag: 19.01.08, 07:41
  4. Fenstergröße anpassen
    Von uwee im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 14.01.05, 13:34
  5. Fenstergröße automatisch an Auflösung anpassen
    Von ZAntjeZ im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 30.08.04, 12:58