Layout-Problem, Größe von Komponenten

Status
Nicht offen für weitere Antworten.

martram

Aktives Mitglied
Hallo,

ich arbeite im Moment an einem SubPanel für eine GUI von mir. Nun zu meinem Problem, das Panel ist in 3 Teile unterteilt, wobei der untere und obere immer gleich sind. Nur die generellen Inhalte im mittleren unterscheiden sich je nach Eingabe. Nun möchte ich, das die Buttons im "CenterPanel", wenn genug Platz ist, die selbe Größe haben, wie die Buttons oben und unten. Wenn zu wenig Platz ist, soll das Standardverhalten greifen.

Ein Bild sagt ja bekanntlich mehr:
http://img278.imageshack.us/img278/1540/testix4.jpg
im linken bild ist genug Platz, und ich möchte, das die EDFF-Buttons jeweils genauso groß sind wie die oben und unten. im rechten ist zu wenig Platz, das ScrollPane springt an - und die Größe ist mir ab da relativ egal.

Nun zum code:

Code:
public class Test extends JPanel {
	
	//private DataCountry dc;

	public Test (){

		
		//this.dc = dc;
		setLayout(new BorderLayout());
		//top:
		JPanel top = new JPanel (new GridLayout(2,1,10,20));
		JButton toContinent = new JButton ("Europe");
		
		top.add(toContinent);
		top.add(new JSeparator());
		//---
		
		JPanel center = new JPanel (new GridLayout(4,1,10,10));
		for (int i = 0; i < 4; i++){ //da wo die 4 ist, ist sonst natürlich ein Datenobjektarray
			JButton jb = new JButton("EDFF");
			
			center.add(jb);
			//center.add(new JButton(dc.getChild(i).getICAOCode()));
		}
		
		//center.setBorder( new EmptyBorder (0,10,10,10));
		JPanel centerDummy = new JPanel ();
		centerDummy.add(center);
		JScrollPane spCenter = new JScrollPane (centerDummy);
		spCenter.setBorder(new EmptyBorder(0,0,20,0));
		
		JPanel bottom = new JPanel (new GridLayout(2,1,0,0));
		JButton newFIR = new JButton ("neue FIR");
		
		bottom.add(new JSeparator());
		bottom.add(newFIR);
		
		JPanel returnPanel = new JPanel (new BorderLayout());
		returnPanel.add(top, BorderLayout.NORTH);
		returnPanel.add(spCenter, BorderLayout.CENTER);
		returnPanel.add(bottom, BorderLayout.SOUTH);
		returnPanel.setBorder(new EmptyBorder (15,15,15,15));
		
		add(returnPanel);
		
		setBorder(BorderFactory.createTitledBorder(
			BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "Navigation"));
		}
}

Aufgerufen wird das Panel so:
Code:
JPanel subPanel = new PanelCountrySub();
		subPanel.setPreferredSize(new Dimension (150,600));
 

André Uhres

Top Contributor
Oder mach dir eine Methode "adaptButtons", die du bei "componentResized" aufrufst:
Code:
package gui;
/*
 * ButtonDemo.java
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class ButtonDemo extends JFrame {
    final private PanelCountrySub subPanel;
    public ButtonDemo() {
        super("Button Demo");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(400,400);
        setLocationRelativeTo(null);
        subPanel = new PanelCountrySub();
        subPanel.setPreferredSize(new Dimension(150,600));
        add(subPanel);
        setVisible(true);
        subPanel.adaptButtons();
        subPanel.revalidate();
        addComponentListener(new ComponentAdapter() {
            public void componentResized(final ComponentEvent e) {
                subPanel.adaptButtons();
            }
        });
    }
    public static void main(String args[]) {new ButtonDemo();}
}
class PanelCountrySub extends JPanel {
    private JPanel top, center, bottom;
    private JScrollPane spCenter;
    private JButton toContinent;
    public PanelCountrySub(){
        setLayout(new BorderLayout());
        top = new JPanel(new GridLayout(2,1,10,20));
        toContinent = new JButton("Europe");
        top.add(toContinent);
        top.add(new JSeparator());
        center = new JPanel(new GridLayout(4,1,10,10));
        for (int i = 0; i < 4; i++){ //da wo die 4 ist, ist sonst natürlich ein Datenobjektarray
            JButton jb = new JButton("EDFF");
            center.add(jb);
        }
        JPanel centerDummy = new JPanel();
        centerDummy.add(center);
        spCenter = new JScrollPane(centerDummy);
        spCenter.setBorder(new EmptyBorder(0,0,20,0));
        bottom = new JPanel(new GridLayout(2,1,0,0));
        JButton newFIR = new JButton("neue FIR");
        bottom.add(new JSeparator());
        bottom.add(newFIR);
        JPanel returnPanel = new JPanel(new BorderLayout());
        returnPanel.add(top, BorderLayout.NORTH);
        returnPanel.add(spCenter, BorderLayout.CENTER);
        returnPanel.add(bottom, BorderLayout.SOUTH);
        returnPanel.setBorder(new EmptyBorder(15,15,15,15));
        add(returnPanel);
        setBorder(BorderFactory.createTitledBorder(
                BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "Navigation"));
    }
    public void adaptButtons() {
        Component[] comps = center.getComponents();
        for (int i = 0; i < comps.length; i++) {
            if(comps[i] instanceof JButton){
                Dimension size = toContinent.getSize();
                size.width -= 11;
                if(spCenter.getVerticalScrollBar().isShowing()){
                    size.width -= 20;
                }
                JButton btn = ((JButton)comps[i]);
                btn.setSize(size);
                btn.setPreferredSize(size);
            }
        }
    }
}
 

martram

Aktives Mitglied
danke euch beiden!

Ich benutze vorerst Andrès Lösung, da sie schnell und einfach zu nutzen ist (danke dafür), werd mich wohl aber mal langfristig ins TableLayout einarbeiten. Gibt es noch andere nennenswerte LayoutManager, die "extern" entwickelt werden?

Grüße,

martram
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Layout - Problem AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
F Layout-Problem AWT, Swing, JavaFX & SWT 2
D Problem mit 3-Spalten Layout AWT, Swing, JavaFX & SWT 17
A Problem mit Layout-Manager AWT, Swing, JavaFX & SWT 11
B LayoutManager Layout Problem AWT, Swing, JavaFX & SWT 14
A SWT Layout Problem AWT, Swing, JavaFX & SWT 15
K Swing Layout-Problem mit JTables und JLists (Mindestgrößen) AWT, Swing, JavaFX & SWT 11
N SWT Einfaches Problem beim Layout AWT, Swing, JavaFX & SWT 8
V Layout Problem AWT, Swing, JavaFX & SWT 5
M JPanel Layout Problem AWT, Swing, JavaFX & SWT 11
I Layout Problem beim Skalieren AWT, Swing, JavaFX & SWT 3
T Null Layout Problem. AWT, Swing, JavaFX & SWT 3
M Layout Problem: Zentriern in Panel AWT, Swing, JavaFX & SWT 3
M Layout-Problem: JTable AWT, Swing, JavaFX & SWT 3
A Layout-Problem AWT, Swing, JavaFX & SWT 5
W SWT, Anordung von Elementen - Layout Problem ? AWT, Swing, JavaFX & SWT 2
I Null-Layout-Problem AWT, Swing, JavaFX & SWT 2
M Problem mit NULL-Layout AWT, Swing, JavaFX & SWT 2
M Problem mit Layout wegen Textarea AWT, Swing, JavaFX & SWT 3
G Layout Problem AWT, Swing, JavaFX & SWT 6
M Layout / setSize Problem AWT, Swing, JavaFX & SWT 15
M Layout Problem (GrudBag- + BorderLayout) AWT, Swing, JavaFX & SWT 6
S Wiedermal SWT-Layout-Problem AWT, Swing, JavaFX & SWT 6
S SWT - Simples Layout Problem AWT, Swing, JavaFX & SWT 9
M Layout Problem, Ideen gesucht AWT, Swing, JavaFX & SWT 7
H Problem mit Layout Fenstern (Swing) AWT, Swing, JavaFX & SWT 3
M Layout Problem AWT, Swing, JavaFX & SWT 3
D Layout Problem / JTree und JPanel AWT, Swing, JavaFX & SWT 4
N Layout-Problem (JScrollPane, GridBagLayout) AWT, Swing, JavaFX & SWT 3
D Layout-Problem AWT, Swing, JavaFX & SWT 8
M Problem mit Layout/JLabel AWT, Swing, JavaFX & SWT 5
D Layout Problem mit Überdeckung AWT, Swing, JavaFX & SWT 6
J Kleines Layout Problem AWT, Swing, JavaFX & SWT 5
S Problem mit dem Layout - 3 JPanel's AWT, Swing, JavaFX & SWT 3
G Layout-Problem AWT, Swing, JavaFX & SWT 4
G Problem mit JDialog-Layout AWT, Swing, JavaFX & SWT 4
F Problem mit Panel-Layout AWT, Swing, JavaFX & SWT 3
M Layout Problem. AWT, Swing, JavaFX & SWT 6
E Problem mit GridBag Layout AWT, Swing, JavaFX & SWT 2
G Layout Problem AWT, Swing, JavaFX & SWT 3
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
R Layered Layout AWT, Swing, JavaFX & SWT 1
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
E Swing Layout während der Laufzeit anpassen AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
S Kann javafx.scene.layout.VBoxBuilder nicht importieren AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
I JavaFX - festes Layout AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing Card-Layout, Fokus AWT, Swing, JavaFX & SWT 2
kilopack15 Interface mit Layout verknüpfen AWT, Swing, JavaFX & SWT 2
Y Layout/Ausrichtungsprobleme AWT, Swing, JavaFX & SWT 4
T JavaFX Custom Layout AWT, Swing, JavaFX & SWT 5
A GUI Layout AWT, Swing, JavaFX & SWT 11
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
L wie Layout-Grid in JXPanel anzeigen? AWT, Swing, JavaFX & SWT 5
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
Soloeco LayoutManager Wie und welches Layout nutze ich am Besten? AWT, Swing, JavaFX & SWT 13
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout reagiert nicht auf Constraints AWT, Swing, JavaFX & SWT 4
IsSchoGuat LayoutManager Layout-Containergrösse AWT, Swing, JavaFX & SWT 4
F GridBag Layout AWT, Swing, JavaFX & SWT 1
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
J ComboBoxModel addElement verändert Layout AWT, Swing, JavaFX & SWT 8
E Probelm mit Layout AWT, Swing, JavaFX & SWT 1
B Hilfe welches Layout brauch ich AWT, Swing, JavaFX & SWT 4
P Tipps für GUI-Layout AWT, Swing, JavaFX & SWT 2
M Passender Layout-Manager AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout zur Laufzeit ändern AWT, Swing, JavaFX & SWT 8
N Swing Zweifarbiges Layout für den Filechooser AWT, Swing, JavaFX & SWT 12
B LayoutManager Card Layout AWT, Swing, JavaFX & SWT 2
E Angehängtes Layout, aber wie? AWT, Swing, JavaFX & SWT 12
1 Eigenes Layout schreiben AWT, Swing, JavaFX & SWT 4
B SWT layout invalidieren in SWT? AWT, Swing, JavaFX & SWT 4
R Welchen Layout Manager/ Wie strukturieren? AWT, Swing, JavaFX & SWT 14
J Layout: oben 20% unten 80% AWT, Swing, JavaFX & SWT 12
T Layout für Listendarstellung AWT, Swing, JavaFX & SWT 3
F LayoutManager Null-Layout unter Linux im TreeCellEditor AWT, Swing, JavaFX & SWT 3
K Eclipse Layout (Gimp Layout, Tiled Layout...) AWT, Swing, JavaFX & SWT 4
C LayoutManager Passendes Layout gesucht AWT, Swing, JavaFX & SWT 2
M Layout funktioniert nicht AWT, Swing, JavaFX & SWT 3
dzim Layout von Panes in JFX2 AWT, Swing, JavaFX & SWT 17
H Layout Idee AWT, Swing, JavaFX & SWT 8
M Swing Dynamisches Layout AWT, Swing, JavaFX & SWT 10
P Swing welchen Layout Manager verwenden AWT, Swing, JavaFX & SWT 9
J LayoutManager Komponentenaustausch zerschießt Layout AWT, Swing, JavaFX & SWT 4
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben