"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[JAVA] JTable+JScrollPane+GridBagLayout verstehen Breitenvorstellung nicht

das_pseudonym 25.08.2008 - 22:56 3703 3
Posts

das_pseudonym

Little Overclocker
Avatar
Registered: May 2003
Location: Wien
Posts: 112
Hallo,

ich bin am verzweifeln, seit 3 Stunden zerbrech ich mir den Kopf und google mich durch, aber ich finde keine Lösung für mein Problem.

Ich habe hier ein JFrame mit einem BorderLayout bestückt und alle "Himmelsrichtungen" mir gleichnamigen JPanels belegt.

atm versuche ich das West-Panel zum laufen zu bekommen, allerdings ist die Breite meiner JTable, die sich in einer JScrollPane befindet etwas zu groß.
Ich benötige nur 3 Spalten - weil ich den restlichen Platz für die anderen Elemente brauchen werde.

Hier einmal der Code:

Code:
/*
 * Interface.java
 *
 * Created on 23. August 2008, 12:44
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package semdaba;

import java.awt.*;
import java.util.*;
import java.awt.Color;
import javax.swing.*;
import java.awt.event.*;


/**
 *
 * @author Cthulhu
 */
public class Interface {
    
    JFrame f;
    JPanel north, south, east, west, center;
    
    /*North-Panel - ANFANG*/
    JTextField user, pw;    
    FlowLayout flnorth;
    JButton blogin;
    /*North-Panel - ENDE*/
    
    /*West-Panel - ANFANG*/
    JTextField wsearch;
    JTable wtable;
    GridBagLayout gbl;
    GridBagConstraints con_wsearch, con_wtable;
    JScrollPane jsp;
    /*West-Panel - ENDE*/
    
    
    /*Menü - ANFANG*/
    JMenuBar jmb;
    JMenu mode, info;
    JMenuItem checkin, admin, ueber, exit;
    /*Menü - ENDE*/
    
    
    
    /** Creates a new instance of Interface */
    public Interface() {
        f = new JFrame("SemDaBa");
        f.setSize(1000, 700);

        north = new JPanel();
        east = new JPanel();
        south = new JPanel();
        west = new JPanel();
        center = new JPanel();
        
        
        /*Menü - Anfang*/
        jmb = new JMenuBar();
        mode = new JMenu("Modus");
        info = new JMenu("Info");
        
        checkin = new JMenuItem("Check-In");
        admin = new JMenuItem("Administration");
        ueber = new JMenuItem("Über...");
        exit = new JMenuItem("Beenden");
        
        mode.add(checkin);
        mode.add(admin);
        mode.addSeparator();
        mode.add(exit);
        
        info.add(ueber);
        
        jmb.add(mode);
        jmb.add(info);
        
        f.setJMenuBar(jmb);
        
        checkin.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent ae){
               
           } 
        });
        admin.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent ae){
               
           } 
        });
        exit.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent ae){
               System.exit(0);
           } 
        });
        /*Menü - Ende*/

        
        
        f.getContentPane().add(east, BorderLayout.EAST);
        f.getContentPane().add(center, BorderLayout.CENTER);
        f.getContentPane().add(west, BorderLayout.WEST);
        f.getContentPane().add(north, BorderLayout.NORTH);
        f.getContentPane().add(south, BorderLayout.SOUTH);
        
        north.setBackground(Color.RED);
        south.setBackground(Color.GREEN);
        west.setBackground(Color.YELLOW);
        east.setBackground(Color.GRAY);
        
        /*NORTH-PANEL - ANFANG*/
        user = new JTextField("Username");
        pw = new JTextField("Password");
        blogin = new JButton("Login");
        
        user.setColumns(15);
        pw.setColumns(10);
        
        user.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent ae)
           {
                
           }
        });
        pw.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent ae)
           {
                pw.setText("");
           }
        });
        blogin.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent ae)
           {
           }
        });
        
        user.addMouseListener(new MouseAdapter(){
           public void mouseClicked(MouseEvent me)
           {
                user.setText("");
           }
        });
        pw.addMouseListener(new MouseAdapter(){
           public void mouseClicked(MouseEvent me)
           {
                pw.setText("");
           }
        });
       
        flnorth = new FlowLayout();
        flnorth.setAlignment(FlowLayout.LEFT);
        north.setLayout(flnorth);
        
        north.add(user);
        north.add(pw);
        north.add(blogin);
        /*NORTH_PANEL - ENDE*/
        
        /*West-Panel - ANFANG*/
        wsearch = new JTextField();
        wtable= new JTable(new String[][]{{"1", "2", "3"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"},{"4", "5", "6"}}, new String[]{"Nachname", "Vorname", "Bezahlt"});
        jsp = new JScrollPane(wtable);
        wsearch.setColumns(20);
        
        jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        
        gbl = new GridBagLayout();
            
        con_wsearch = new GridBagConstraints();
        con_wtable = new GridBagConstraints();       
        
        con_wsearch.anchor = GridBagConstraints.WEST;
        con_wtable.anchor = GridBagConstraints.WEST;
        
        con_wsearch.gridx = 0;
        con_wtable.gridx = 0;
        con_wsearch.gridy = 0;
        con_wtable.gridy = 1;
        
       con_wtable.gridwidth = 1;
       con_wtable.gridheight = 1;
        
        
        con_wtable.fill = GridBagConstraints.VERTICAL;
            
        gbl.setConstraints(wsearch, con_wsearch);
        gbl.setConstraints(jsp, con_wtable);
        //wtable.setCellSelectionEnabled(false);
        //wtable.setColumnSelectionAllowed(false);
        //wtable.setFillsViewportHeight(true);

        jsp.setWheelScrollingEnabled(true);

        wtable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
       
        west.setLayout(gbl);
        west.add(wsearch);
        west.add(jsp);
        
        /*West-Panel - ENDE*/
        
        /*Center-Panel - ANFANG*/

        /*Center-Panel - ENDE*/
        
        /*East-Panel - ANFANG*/

        /*East-Panel - ENDE*/
        
        /*South-Panel - ANFANG*/

        /*South-Panel - ENDE*/
        
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        f.setVisible(true);
    }
    
}

Ich hoffe jemand von euch kann mir weiterhelfen.

MfG

pseudo

Edit: Es gibt zwar noch ne main-klasse, aber da wird nur eine instanz aus interface erzeugt.

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
ich werd noch ein bissl weiter schauen, aber mal eins im voraus: findest den konstruktor von der table im west-panel net ein bissl... umständlich? also ich weiß net, welches ziel der verfolgt (ein bild tät mir wahrscheinlich helfen), aber so auf den ersten blick wärs wahrscheinlich mit einer schleife eleganter gegangen.

//versuch mal mit wtable.setPreferredSize(x,y) herumzuprobieren. und wenn das nix hilft mit der prefferedSize vom panel, in dem die wtable ist.
Bearbeitet von prayerslayer am 29.08.2008, 23:41

meepmeep

Here to stay
Avatar
Registered: Feb 2006
Location: Wien
Posts: 2334
du könntest das ganze im gui builder vom netbeans mal basteln und dir dann den generierten code anschaun. da steht dann wahrscheinlich das gesuchte drinnen.

das_pseudonym

Little Overclocker
Avatar
Registered: May 2003
Location: Wien
Posts: 112
habs schon beheben können (hat aber ein bissl gedauert)

meine java kenntnisse waren ein bissl eingstaubt und ich hab ned gscheid mit dem gridbaglayout umgehen können.

Lösung:

Einstellungen der Constraints mit gridx, gridy und gridweight anpassen.

Vielen Dank für die Hilfe. ;)

Für all jene die bei ihrer Suche nach Lösungen für ihre probleme hier landen und aus der java doc übers gridbaglayout ned schlau werden:

http://www.vorlesungen.uos.de/infor...tmld/index.html

MfG

pseudo
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz