tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
289
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    MariusMeier MariusMeier ist offline Mitglied Silber
    Registriert seit
    Jan 2008
    Beiträge
    81
    Hallo zusammen

    Ich habe folgenden 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
    
    denomNomPanel = new ObservableJPanel();
            denomNomPanel.attach(new Observer() {
                public void update(Observable o, Object arg) {
                    IFilter filter = null;
                    if (arg instanceof IFilter) {
                        filter = (IFilter) arg;
                    }
                    
                    denomNomPanel.setLayout(null);
                    
                    for(int i=0;i<lblDenominator.size();i++) {
                        denomNomPanel.remove((JLabel)lblDenominator.get(i));
                        lblDenominator.removeElement(i);
                    }
                    
                    int pos=10;
                    for(int i=0;i<filter.getSeparateDenominator().length;i++) {
                        System.out.println("Grösse SeparateDenominator: " + filter.getSeparateDenominator()[i]);
                        if(filter.getSeparateDenominator()[i] != null) {
                            JLabel lblDenom = new JLabel(filter.getSeparateDenominator()[i]);
                            lblDenom.setBounds(pos, 10, 150, 30);
                            denomNomPanel.add(lblDenom);
                            pos+=150;
                            lblDenominator.addElement(lblDenom);
                        }
                    }
                    
                    for(int i=0;i<lblNominator.size();i++) {
                        denomNomPanel.remove((JLabel)lblNominator.get(i));
                        lblNominator.removeElement(i);
                    }
                    
                    if(filter.getOffsetK() != 0) {
                        pos=150;
                    }
                    
                    else {
                        pos=10;
                    }
                    
                    for(int i=0;i<filter.getSeparateNumerator().length;i++) {
                        
                        if(filter.getSeparateNumerator()[i] != null) {
                            JLabel lblNom = new JLabel(filter.getSeparateNumerator()[i]);
                            lblNom.setBounds(pos, 60, 150, 30);
                            denomNomPanel.add(lblNom);
                            pos+=150;
                            lblNominator.addElement(lblNom);
                        }
                    }
                    denomNomPanel.updateUI();
                    
                }
            });
            ActiveFilter.getInstance().addObserver(denomNomPanel);
    Dann have Ich das JPanel einem JScrollPane zugewiesen und zwar folgendermassen:

    Code :
    1
    2
    3
    
    JScrollPane denomNomScroll = new JScrollPane(denomNomPanel);
    denomNomScroll.setBounds(70, 30, 400, 100);
    this.add(denomNomScroll);

    Nun zum Problem: Wenn der Nenner oder der Zähler sich aus einem Grund ändert, teilt das der Observer meinem JPanel mit und erstellt dabei weitere JLabels.
    Wenn ich 4 JLabels habe, mit irgendwelchen Strings gefüllt, dann sieht man auf dem Bildschrim das 4te JLabel nicht mehr.... eigentlich sollte doch die ScrollPane merken dass sie jetzt eingeblendet werden muss um zum 4ten JLabel zu scrollen.... jedoch passiert nichts.... warum denn genau

    MFG Marius Meier
     

  2. #2
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    ich schätze jetzt einfach mal, dass du
    Code :
    1
    
    denomNomPanel.setLayout(null)
    gemacht hast.

    Wenn du dann natürlich was hinzufügst, was außerhalb der Größe des Panels ist, ist das vollkommen egal. Das Panel bleibt so klein. Du musst das Panel auch vergrößern.

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  3. #3
    MariusMeier MariusMeier ist offline Mitglied Silber
    Registriert seit
    Jan 2008
    Beiträge
    81
    mh oke ich schätze mal so was machen wie

    Code :
    1
    2
    3
    
    denomNomPanel.setSize(pos, 100);
    denomNomPanel.updateUI();
    denomNomPanel.repaint();

    hat aber ned funktioniert habe ich ne falsche überlegung ?

    MFG Marius Meier
     

  4. #4
    MariusMeier MariusMeier ist offline Mitglied Silber
    Registriert seit
    Jan 2008
    Beiträge
    81
    Oke habs rausgefunden. Habe folgendes gemacht:

    Code :
    1
    2
    
    denomNomPanel.setPreferredSize(new Dimension(pos,110));
    denomNomPanel.updateUI();

    Jetzt funktionierts mit den Scrollbars!

    MFG Marius Meier
     

Ähnliche Themen

  1. ScrollPane auf einem JPanel
    Von nathaniells freak im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 13.03.09, 09:15
  2. JPanel mit Border, Scrollpane und Checkboxen
    Von Saban im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 17
    Letzter Beitrag: 09.02.09, 08:16
  3. (JPanels auf ScrollPane) auf JPanel
    Von keeepa im Forum Java
    Antworten: 1
    Letzter Beitrag: 12.11.06, 18:44
  4. JPG image von JPanel in ScrollPane machen
    Von HarryHut im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 7
    Letzter Beitrag: 21.03.06, 18:01
  5. Eclipse&Swing: JPanel funktioniert nicht ?!
    Von Ischtan im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 21.10.04, 18:58