tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
749
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Serethos Serethos ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    127
    Servus

    hab mir ein Frame gemacht und darauf leg ich mir dann ein JPanel jetzt hab ich nur das problem das ich die Größe dieses JPanel nicht ändern kann. es bleibt in der Größe so wie es will. Ich hab schon alles abgesucht (api, mein progi hundertmal) aber ich find kein fehler.
    ok hier ist mein quellcode ich hoffe ihr habt ne lösung für dieses seltsame Problem.
    Danke

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
        public static JPanel              Ergebniss   = null; //HauptFenster(Ergebnis)
        private static JScrollPane      jReScrollPane1  = null;
        public static JTable              jTable          = null;
        public static DefaultTableModel   dtm1           = null;
        public static Vector              columnNames     = new Vector();
        
        
        
        public static JPanel getErgebniss(){
            if(Ergebniss==null){
                Ergebniss = new JPanel();
                System.out.println("Die Größe meines Panels(höhe) "+Ergebniss.getHeight());
                System.out.println("Die Größe meines Panels(breite) "+Ergebniss.getWidth());
     
                Ergebniss.setBorder(javax.swing.BorderFactory.createTitledBorder
                        (javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED), 
                        " Ergebnis ", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, 
                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
                Ergebniss.add(getJReScrollPane1(0));
            }
            return Ergebniss;
        }

    so zeigt er mir bei der ausgabe alle beite werte mit 0 an aber es ändert sich die größe nicht
    und wenn ich das dazu mache (kann beliebige werte eingeben und seh keine veränderung)

    Ergebniss.setLocation(20, 20);
    Ergebniss.setSize(220, 330);

    freu mich auf jeden tip
     

  2. #2
    eagle eagle ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Ort
    Schweiz
    Beiträge
    61
    Kann es sein dass du mit einem LayoutManager Arbeitest?
    Soweit ich weiss kannst du dann die grösse und Position nur relativ bestimmen, variert je nach layoutmanager.

    Falls du alle Komponenten auf dem Frame von Hand setzten willst, musst du den LayoutManager ausschalten und zwar mit setLayout(null)
     

  3. #3
    Serethos Serethos ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    127
    lege das panel direkt auf das frame. also hab ich wie du gesagt hast das mit dem setLayout(null) gemacht.
    es ist was passiert was ich auch sehr gut finde.
    1. Ergebniss das Panel bleibt immer noch so groß wie vorher
    2. Ergebniss das JScrollpane was ich immer zu einer bestimmten zeit auf das panel lege reagiert jetzt auf die anweisungen wie setbounds();

    ok so kann man das lassen.

    aber wieso kann ich die größe von dem panel nicht ändern ?
     

  4. #4
    eagle eagle ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Ort
    Schweiz
    Beiträge
    61
    jedes panel hat einen eigenen layoutmanager, ich nehme an, du setzt den layoutmanger des panles auf null, daher reagiert die jscollpane jetzt auf setbounds.

    du musst den layoutmanager des frames auf null setzten.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    public class TestFrame extends JFrame{
      public TestFrame(){
        super();
        this.getContentPane().setLayout(null);
        JPanel p = new JPanel();
        p.setSize(100, 200);
        p.setLocation(30, 20);
        this.getContentPane().add(p);
      }
    }
     

  5. #5
    Serethos Serethos ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    127
    das layout vom contentpane ist auf null gesetzt
     

  6. #6
    eagle eagle ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Ort
    Schweiz
    Beiträge
    61
    Zeig mal deinen Code, vileicht kann ich dir dann weiterhelfen, ansonsten weiss ich auch nicht mehr weiter
     

  7. #7
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Zitat Zitat von Serethos
    das layout vom contentpane ist auf null gesetzt
    Moin,
    wie sieht es denn aus, wenn Du stattdessen einen Layoutmanager benutzt? Probier mal aus, wie es sich verhält, wenn Du ein BorderLayout oder GridLayout verwendest.
     

  8. #8
    Serethos Serethos ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    127
    servus also hier ist mein code


    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    
     public class Query{
     public static JPanel getJPanel3() {
            if (jPanel3 == null) {
                jPanel3 = new javax.swing.JPanel();
                jPanel3.setLayout(null);
                jPanel3.setName("Query");
                jPanel3.add(getJPanel30(), null);
                //jPanel3.add(Root.getJPanel20(), null);
                jPanel3.add(getJPanel1(), null);
            }
            return jPanel3;
        }
     
        /**
         * Diese Methode initialisiert jPanel30:
         *  Das Panel bildet den Hauptrahmen im Karteireiter "Datenbankabfragen" 
         * @return javax.swing.JPanel   
         */ 
        public static JPanel getJPanel30() {
            if (jPanel30 == null) {
                jPanel30 = new javax.swing.JPanel();
                jPanel30.setLayout(null);
                jPanel30.setSize(920, 600);
                jPanel30.setLocation(0, 0);
                jPanel30.setMinimumSize(new java.awt.Dimension(920,580));
                jPanel30.setPreferredSize(new java.awt.Dimension(920,580));
                jPanel30.setBorder(javax.swing.BorderFactory.createTitledBorder
                    (javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED), 
                    " Daten abfragen ", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, 
                    javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
                jPanel30.setFont(new java.awt.Font("Microsoft Sans Serif", java.awt.Font.PLAIN, 12));
                jPanel30.add(getJTabbedPane300(), null);
            }
            return jPanel30;
        }
     
        /**
         * Diese Methode initialisiert jTabbedPane300:
         *  jTabbedPane300 bildet den Container für die Karteireiter "Abfrage" und "Ergebnis" 
         * @return javax.swing.JTabbedPane  
         */ 
        public static JTabbedPane getJTabbedPane300() {
            if (jTabbedPane300 == null) {
                jTabbedPane300 = new javax.swing.JTabbedPane();
                jTabbedPane300.setSize(908, 573);
                jTabbedPane300.setLocation(5, 20);
                jTabbedPane300.addTab("Abfrage", null, getJPanel3000(), null);
                jTabbedPane300.addTab("Ergebnis", null,Result.getErgebniss(), null);
                jTabbedPane300.setFont(new java.awt.Font("Microsoft Sans Serif", java.awt.Font.PLAIN, 12));
            }
            return jTabbedPane300;
        }
     }
     
     
     
     public class Result(){
     public static JPanel getErgebniss(){
            if(Ergebniss==null){
                Ergebniss = new JPanel();
                Ergebniss.setLayout(null);
                Ergebniss.setLocation(5, 5);
                Ergebniss.setSize(550, 550);
                Ergebniss.setBorder(javax.swing.BorderFactory.createTitledBorder
                        (javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED), 
                        " Ergebnis ", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, 
                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
            }
            return Ergebniss;
        }
     }

    bitte schön
     

  9. #9
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Zitat Zitat von Serethos
    servus also hier ist mein code


    Code :
    1
    2
    3
    
                jPanel3.setLayout(null);
                jPanel30.setLayout(null);
                Ergebniss.setLayout(null);

    bitte schön
    Du setzt ja alle Layouts auf NULL. Probier doch mal aus was passiert, wenn Du ein Layout verwendest. Hatte ich übrigens auch schon oben empfohlen.
     

Ähnliche Themen

  1. JPanel Problem
    Von yax im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 22
    Letzter Beitrag: 12.08.10, 22:43
  2. Problem mit repaint() in JPanel
    Von HansWernerM im Forum Java
    Antworten: 4
    Letzter Beitrag: 17.06.07, 00:02
  3. Antworten: 7
    Letzter Beitrag: 16.05.07, 17:03
  4. JPanel Instanz in einen JPanel laden ?
    Von mkoeni1 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 15.01.07, 12:15
  5. Problem mit JPanel
    Von Shizzl_chrizzl im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 09.12.04, 12:35