tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Akeshihiro
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
460
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von SCIPIO-AEMILIANUS
    SCIPIO-AEMILIANUS SCIPIO-AEMILIANUS ist offline aka DonMahallem
    Registriert seit
    Mar 2007
    Ort
    Saxonburg(Pa)
    Beiträge
    375
    Nabend,

    ich hab ein Problem mit einer selbstgebauten JComponente, die sich nicht durch ein FlowLayout anordnen lässt.
    Folgendes steht im Constructor von nem JFrame:
    Code :
    1
    2
    3
    4
    5
    6
    
    FlowLayout experimentLayout = new FlowLayout(FlowLayout.CENTER);
    this.setLayout(experimentLayout);
    b=new ListItem();
    this.add(b);
    a=new ListItem();
    this.add(a);
    ListItem ist hierbei meine JComponente.
    Die sieht von innen bisher aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    public class ListItem extends JComponent {
        ListItem(){
        
        }
        private static final long serialVersionUID = 1964597614409177719L;
        public void paint(Graphics g){
            Color bg=new Color(0,0,0,128);
            g.setColor(bg);
            g.fillRoundRect(0,0,120,120,40,40);
        }
    }
    Wie folgt sieht dann das Fenster aus:
    Modifizierte JComponent und LayoutManager-screen.png
    Demnach beachtet der LayoutManager die horizontale Lücke von standartmäßig 5px, kann aber anscheinend, nicht die Breite der Componenten ermitteln und legt sie somit übereinander.
    Ich hab bereits probiert, indem ich die Funktionen:
    • getSize()
    • computeVisibleRect(Rectangle visibleRect)
    • getHeight()
    • getWidth()
    • getBounds()
    in Listitem ersetzt hab durch eigene Funktionen die entsprechende Maße von 120*120 zurückgeben das Problem zu lösen, aber ohne Erfolg.
    Wo liegt der Fehler?
     
    MFG Scipio
    Ein Danke für hilfreiche Antworten ist gern gesehen.

  2. #2
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Eigentlich funktioniers richtig, bei mir jedenfalls, wenn man die PreferedSize setzt, damit der LayoutManager auch weiß, womit er arbeiten muss. Das kannste z.B. im Konstruktor machen:
    Code java:
    1
    2
    3
    
    public ListItem() {
        setPreferredSize(new Dimension(120, 120));
    }
    Sollte jetzt auch bei dir normal laufen.
    SCIPIO-AEMILIANUS bedankt sich. 
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  3. #3
    Avatar von SCIPIO-AEMILIANUS
    SCIPIO-AEMILIANUS SCIPIO-AEMILIANUS ist offline aka DonMahallem
    Registriert seit
    Mar 2007
    Ort
    Saxonburg(Pa)
    Beiträge
    375
    Vielen Dank.
    Stimmt, hab jetzts 3te mal die Dokumentation gewälzt und habs auch endlich gelesen, dass pack() und LayoutManager auf preferredSize schauen.
     
    MFG Scipio
    Ein Danke für hilfreiche Antworten ist gern gesehen.

  4. #4
    Avatar von SCIPIO-AEMILIANUS
    SCIPIO-AEMILIANUS SCIPIO-AEMILIANUS ist offline aka DonMahallem
    Registriert seit
    Mar 2007
    Ort
    Saxonburg(Pa)
    Beiträge
    375
    Ich muss das Thema nochmal öffnen, weil ich schon wieder auf Verständnisprobleme mit dem Layoutmanager gestoßen bin.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
            this.setMinimumSize(new java.awt.Dimension(640,480));
            c1=new Container();
            c2=new Container();
            c1.setPreferredSize(new Dimension(20,30));
            c1.setPreferredSize(new Dimension(640,480));
            c1.setLayout(new FlowLayout(FlowLayout.LEFT));
            c2.setLayout(new FlowLayout(FlowLayout.CENTER));
            this.setTitle("MainWindow");
            this.setLayout(new BorderLayout());
            this.add(BorderLayout.NORTH,c1);
            this.add(BorderLayout.CENTER,c2);
            b=new ListItem();
            c2.add(b);
    Jetzt wird aber b im Container c2 linksbündig angeordnet. Wo liegt hierbei das Problem?
    Es sollen alle Objeckte in Kontainer c1 linksbündig sein und dann wie weiter oben die grauen 4 Ecke mittig in c2. Danke im vorraus.
     
    MFG Scipio
    Ein Danke für hilfreiche Antworten ist gern gesehen.

  5. #5
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Seltsam das Verhalten bei dir, denn bei mir wird alles so dargestellt, wie es soll. Hast du vielleicht irgendwo anders Codezeilen, die das Verhalten ändern? In diesem Codestückchen wird jedenfalls alles richtig dargestellt.
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  6. #6
    Avatar von SCIPIO-AEMILIANUS
    SCIPIO-AEMILIANUS SCIPIO-AEMILIANUS ist offline aka DonMahallem
    Registriert seit
    Mar 2007
    Ort
    Saxonburg(Pa)
    Beiträge
    375
    Hab den Übeltäter gefunden. Hatte noch in ListItem
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
        public Rectangle getBounds() {
            Rectangle rect = new Rectangle();
            rect.height=120;
            rect.width=120;
            rect.x=0;
            rect.y=0;
            return rect;
        }
    stehen.
    Das hat irgendwie den LayoutManager gekillt.
     
    MFG Scipio
    Ein Danke für hilfreiche Antworten ist gern gesehen.

Ähnliche Themen

  1. Modifizierte Lightbox läßt sich nicht mehr schließen
    Von shredder01 im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 14.01.10, 16:44
  2. jComponent Size
    Von lun27 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 03.08.08, 22:48
  3. modifizierte Tracbar
    Von azubi2 im Forum .NET Windows Forms
    Antworten: 4
    Letzter Beitrag: 04.03.06, 15:11
  4. Modifizierte Windows Forms
    Von Maximus im Forum .NET Archiv
    Antworten: 6
    Letzter Beitrag: 10.02.06, 16:04
  5. Modifizierte Windows Forms
    Von Maximus im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 24.05.05, 12:07