JPanel Komponenten Ausrichtung

Lapskaus

Grünschnabel
Hallo mal wieder,
ich sitze momentan an einer Aufgabe die mir kleinere Probleme bereit.
Ich habe mal 2 Bilder angehängt um das Ganze etwas leichter verständlich zu machen.
Das erste Bild zeigt wie es aussehen soll, das zweite, wie es im Moment noch aussieht.

Die Weisse Fläche in dem Fenster ist ein JPanel , in dem sich 4 weitere JPanels(die 4 Balken) befinden. Das ganze hat ein FlowLayout um einen gleichmäßigen Abstand zwischen den Balken zu bekommen.
Mein Problem liegt jetzt darin, dass ich nicht weiss wie ich diese 4 Balken an den unteren Rand des übergeordneten JPanels bekommen.
Desweiteren habe ich noch keine Ahnung wie ich einen Rahmen um das übergeordnete JPanel bekomme, der nur unten und links angezeigt wird.
Ich hab mich mittlerweile 2-3 Stunden lang "dumm und dämlich" gesucht, aber da ich auch n icht wirklich weiss wonach ich zu suchen habe, gestaltet sich das gleichermassen schwierig und erfloglos.

Ich hoffe ihr könnt mir da weiter helfen,
MfG
Lapskaus
 

Anhänge

  • 26879attachment.jpg
    26879attachment.jpg
    38 KB · Aufrufe: 103
  • 26880attachment.jpg
    26880attachment.jpg
    32,3 KB · Aufrufe: 103
Moin!
Was den Rahmen angeht, bastelst du dir eine Klasse die vom abstractBorder erbt, und passt die paintBorder() methode deinen Bedürfnissen an. Das ganze könnte ungefähr so aussehen:
Code:
public class CustomBorder extends AbstractBorder{
    
    public CustomBorder() { }
    
    public void paintBorder(Component c, Graphics g, int x, int y,
                            int w, int h){
        g.setColor(Color.BLUE);
        g.drawLine(0,0,0, h-1);
        g.drawLine(0,h-1,w-1, h-1);
    }

    public Insets getBorderInsets(Component c) {
       return new Insets(0, 0, 0, 0);
    }
    public Insets getBorderInsets(Component c, Insets i) {
       return i;
    }
   
}


*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
Danke dafür schonmal, das klappt wunderbar ...
bleibt noch das Problem mit der Ausrichtung der Balken. Hab bis jetzt rumgerödelt und bin mit der Aufgabe soweit fertig, das es jetzt ohne die richtige Ausrichtung nicht mehr weitergeht. Wär echt toll wenn mir da jemand weiterhelfen könnte.

MfG
Lapskaus
 
Darf man Fragen warum du hier JPanel's benutzt für die Balken und nicht einfach die paint-Methode überschreibst und das ganze mit Grafik-Funktionen zeichnest?
 
Hallo Lapskaus,

man hat bei komplizierten GUIs in der Regel zwei Möglichkeiten. Man verwendet entweder mehrere ineinander kombinierte einfache Layoutmanager, oder einen der komplexeren die die Fähigkeit besitzen die wir uns zur Gestaltung des Interfaces wünschen/brauchen:
http://java.sun.com/docs/books/tutorial/uiswing/layout/visual.html

Wenn du dir die einzelnen Manager auf dieser Seite anschaust müsstest du mit ein wenig Überlegung abschätzen können, ob das mit dem Kombinieren von einfachen LM funktioniert oder ob du ein bestimmtes dieser brauchst.


Vg Erdal
 
Wunderbar, danke, hat auch geklappt, die Balken werden jetzt wie gewünscht angezeigt.

Kommen wir zum hoffentlich letzten Problem wovon ich dachte das es relativ einfach zu lösen sei.

Und zwar kann man ja bei der Paint Methode ja per translate(); und scale(); die einzelnen Rechtecke, oder was man auch zeichnet, so setzen, das sie bei einer Größenänderung z.B. in der Höhe, nach oben "wachsen". Wie bekomme ich das ganze jetzt bei einem JPanel so hin ? Gibt es da eine ähnlich einfache Methode wie beim Paint?

Im Moment sieht das Ganze so aus , das die Balken zwar an der richtigen Stelle angezeigt werden, aber die Höhenänderung nach unten erfolgt, so das die Balken, wenn sie "schrumpfen" in der Luft hängen, und wenn Sie "wachsen" über die X Achse hinausgehen.
 
Hat sich erledigt, ich hatte in der Methode die die Höhe ändert einfach nur ein validate() vergessen.
Klappt jetzt alles wie gewollt. Danke für die schnelle Hilfe.

MfG
Lapskaus
 
Zurück