Dynamische Größenveränderung der Komponenten verhindern

Status
Nicht offen für weitere Antworten.
Hi!

Ich habe ein Problem mit Swing-Design.

Ich habe einen JFrame und darin einen JInternalFrame. Der interne Frame soll größenveränderbar sein. Darin befinden sich einige Buttons, welche ich in JPanels zusammengefasst habe. Für die Panels verwende ich GridLayout. Das Problem ist, dass wenn man die Größe des internen Frames verändert auch die Buttons größer und kleiner werden. Das ergibt doch absolut keinen Sinn, wer will bitteschön 400x300px große Buttons?! Nun will ich verhindern, dass die Größe der Buttons mit dem JInternalFrame verändert wird, sprich die Größe so bleibt, egal ob die Größe des Frames verändert wird. Ich habe es schon mit Befehlen wie
Code:
panel.setSize(panel.getPrefferedSize());
oder
Code:
panel.setMaxmimumSize(panel.getPrefferedSize());
versucht aber es hat nicht geklappt. Außerdem hätte ich gerne, dass alle Buttons automatisch die selbe Größe haben wie das Größte und alle Panele zentiert untereinander im internen Frame sind. Ich weiß nicht genau, welchen LayoutManager ich verwenden soll.

Folgender Programmcode:

Code:
import java.awt.BorderLayout;
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;

public class MainMenu extends JInternalFrame {
    protected MainWindow mainWindow;

    public MainMenu(MainWindow mainWindow) {
	super("Hauptmenü", true, true, true, true);
	this.mainWindow = mainWindow;

	setDefaultCloseOperation(DISPOSE_ON_CLOSE);
	setLayout(new BorderLayout(10, 20));

	JPanel toolsPanel = new JPanel();
	toolsPanel.setLayout(new GridLayout(0, 1));
	toolsPanel.setBorder(BorderFactory
		.createTitledBorder("Assistenten und Werkzeuge"));
	toolsPanel.add(new JButton(mainWindow.new PreferencesAction()));
	toolsPanel.add(new JButton(mainWindow.new QuitAction()));
	
	add(toolsPanel, BorderLayout.CENTER);
	pack();
	setVisible(true);
    }
}
(Es werden später noch weitere Panele und mit weiteren Buttons folgen, aber das Problem besteht jetzt schon).

Vielen Dank für jede Hilfe!
Gruß,
Jan.
 

Wildcard

Top Contributor
Dafür musst du verschiedene Layouts verschachteln.
Versuch mal aufzuzeichnen wie's aussehen soll, dann kann man was konkreteres sagen.
 
Ich hab es schon mit GridBagLayout und BoxLayout versucht, allerdings hatte das auch so seine Macken.

Hier mal eine Skizze, wie es aussehen soll:
SkizzeFST.jpg


Ich hab jetzt beispielhaft 3 Button-Gruppen mit jeweils zwei Buttons genommen, das wird hinterher etwas variieren, aber das dürfte ja kein Problem sein.

Die Gruppen sollen zentriert untereinander liegen und gleich breit sein. Das Gleiche gilt für die Buttons: Die Buttons aus jeder Gruppe sollen gleich breit sein und zentriert untereinander liegen. Evtl. Möchte ich über den Gruppen noch ein JLabel platzieren und unten recht im InternalFrame noch JLabel mit der Versionsnummer oder so.

Den JInternalFrame, den JFrame und das Menü habe ich schon selbst implementiert, dass ist kein Problem.

Gruß,
Jan.
 

Wildcard

Top Contributor
hmm, so würd's wohl gehen:
Jede Gruppe ist ein Panel mit GridLayout und die Gruppen kommen in ein Panel mit BoxLayout.
 
Ich hab das jetzt so gecodet:

Code:
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;

public class MainMenu extends JInternalFrame {
    protected MainWindow mainWindow;

    public MainMenu(MainWindow mainWindow) {
	super("Hauptmenü", true, true, true, true);
	this.mainWindow = mainWindow;

	setDefaultCloseOperation(DISPOSE_ON_CLOSE);

	JPanel buttonPanel = new JPanel();
	buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.PAGE_AXIS));

	JPanel toolsPanel = new JPanel();
	toolsPanel.setLayout(new GridLayout(0, 1));
	toolsPanel.setBorder(BorderFactory
		.createTitledBorder("Assistenten und Werkzeuge"));
	toolsPanel.setAlignmentX(CENTER_ALIGNMENT);
	toolsPanel.setAlignmentY(CENTER_ALIGNMENT);
	toolsPanel.add(new JButton(mainWindow.new PreferencesAction()));
	toolsPanel.add(new JButton(mainWindow.new QuitAction()));
	
	buttonPanel.add(toolsPanel);

	add(buttonPanel);
	pack();
	setVisible(true);
    }
}

Aber folgendes Ergebnis, wenn ich das Fenster vergrößere:
ScreenshotFST.jpg
 
Ok, jetzt funktioniert es soweit. :) Danke!
Um das Ganze nun etwas eleganter zu gestalten und damit der Titel komplett sichtbar ist, wollte ich um die Buttons herum Freiraum in Form eines unsichtbaren Rahmens legen. Allerdings "fressen" die Buttons ihre Rahmen einfach auf, sprich die Größe des Buttons ändert sich um die angegebene Größe des Rahmens! Wie kann ich das ändern/verhindern?

Code:
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;

public class MainMenu extends JInternalFrame {
    protected MainWindow mainWindow;

    public MainMenu(MainWindow mainWindow) {
	super("Hauptmenü", true, true, true, true);
	this.mainWindow = mainWindow;

	setDefaultCloseOperation(DISPOSE_ON_CLOSE);

	JPanel surroundingPanel = new JPanel(new FlowLayout());

	JPanel buttonPanel = new JPanel();
	buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.PAGE_AXIS));

	JPanel toolsPanel = new JPanel();
	toolsPanel.setLayout(new GridLayout(0, 1));
	toolsPanel.setBorder(BorderFactory
		.createTitledBorder("Werkzeuge und Assistenten"));
	toolsPanel.setAlignmentX(CENTER_ALIGNMENT);
	toolsPanel.setAlignmentY(CENTER_ALIGNMENT);
	addButton(toolsPanel, new JButton(mainWindow.new PreferencesAction()));
	addButton(toolsPanel, new JButton(mainWindow.new QuitAction()));

	buttonPanel.add(toolsPanel);
	surroundingPanel.add(buttonPanel);

	add(surroundingPanel);
	pack();
	setVisible(true);
    }

    private void addButton(JPanel buttonPanel, JButton button) {
	button.setBorder(BorderFactory.createEmptyBorder(10, 40, 10, 40));
	button.setBorderPainted(true);
	buttonPanel.add(button);
    }
}
 
Achja stimmt, da war ja was. :-/ Sorry, vergessen.

Ok danke, jetzt funktioniert alles so, wie ich mir das vorgestellt habe. :) Aber ich bin mir sicher, ich melde mich nochmal wegen soonem einfach Quatsch... Swing ist einfach absolut nicht mein Element.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
ohneInformatik; Dynamische Zinsen. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
A Erste Schritte Dynamische Stempel im PDF Exchange programmieren Java Basics - Anfänger-Themen 0
B Fibonacci Zahlen dynamische Programmierung Java Basics - Anfänger-Themen 7
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
L Dynamische Anzahl an Arrays mit verschiedenen Namen erzeugen Java Basics - Anfänger-Themen 6
L Dynamische Bindung Java Basics - Anfänger-Themen 3
W OOP Definition / Abgrenzung dynamische Bindung Java Basics - Anfänger-Themen 11
J Dynamische Datenstrukturen Java Basics - Anfänger-Themen 0
L Variablen Dynamische Variablenname Java Basics - Anfänger-Themen 9
L Dynamische Programmierung Java Basics - Anfänger-Themen 0
M Schlüsselworte Dynamische Polymorhpie Java Basics - Anfänger-Themen 32
J OOP Dynamische Objektnamen Java Basics - Anfänger-Themen 6
Ste3et_C0st Dynamische While/For Schleife Java Basics - Anfänger-Themen 7
F Erste Schritte Dynamische Variablen Java Basics - Anfänger-Themen 15
M Dynamische Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 11
S Dynamische Variable ist? Java Basics - Anfänger-Themen 11
S Verwirrung - Dynamische Bindung greift nicht Java Basics - Anfänger-Themen 2
C Dynamische Referenz & abstrakte Klassen Java Basics - Anfänger-Themen 3
P Klassen statische oder dynamische(?) Klasse Java Basics - Anfänger-Themen 3
J Dynamische Liste durchsuchen + anpassen Java Basics - Anfänger-Themen 3
A Schlüsselworte dynamische Stringteilung Java Basics - Anfänger-Themen 4
C Dynamische (AJAX) Inhalte einer Webseite mittels Java auslesen Java Basics - Anfänger-Themen 2
W Übungsaufgabe:Dynamische Datenstrukturen Java Basics - Anfänger-Themen 10
B dynamische erzeugung eines Objektes Java Basics - Anfänger-Themen 21
L Dynamische Objektgenerierung Java Basics - Anfänger-Themen 4
K Dynamische Bindungsregel Java Basics - Anfänger-Themen 2
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
C dynamische JTextFields durchlaufen Java Basics - Anfänger-Themen 5
H Dynamische Bindung mit Interfaces und LinkedList Java Basics - Anfänger-Themen 7
N OOP Dynamische Objekte und nach Parametern durchsuchen Java Basics - Anfänger-Themen 4
M dynamische JPanels/Component Java Basics - Anfänger-Themen 3
X dynamische Listen Java Basics - Anfänger-Themen 2
A Schnelle, dynamische, geordnete Datenstruktur? Java Basics - Anfänger-Themen 11
M Dynamische JButtons mit ActionListener Java Basics - Anfänger-Themen 7
Y Kleine Verständnisfrage zum Thema dynamische Polymorphie Java Basics - Anfänger-Themen 3
C Dynamische Matrizen Java Basics - Anfänger-Themen 4
0 Dynamische Datenstruktur ohne Duplikate und mit direkter Elementauswahl Java Basics - Anfänger-Themen 3
N Vererbung/Dynamische Bindungen Java Basics - Anfänger-Themen 15
W Dynamische Bindung Java Basics - Anfänger-Themen 3
P jsp tags und scriplets mischen dynamische werte an jsp tag Java Basics - Anfänger-Themen 2
S Dynamische Tabelle Java Basics - Anfänger-Themen 2
P Suche Ersatz für dynamische arrays Java Basics - Anfänger-Themen 2
T Dynamische Reaktionen Java Basics - Anfänger-Themen 29
P Dynamische Bindung Java Basics - Anfänger-Themen 8
F Dynamische Speicheranpassung und exe Java Basics - Anfänger-Themen 9
D Dynamische Objektnamen / Variablen als Objektnamen verwenden Java Basics - Anfänger-Themen 3
J dynamische Auswahl einer überladenen Methode Java Basics - Anfänger-Themen 5
C JTable und dynamische Speicherung Java Basics - Anfänger-Themen 2
M Dynamische Wertsetzung von Variablen durch Eingaben Java Basics - Anfänger-Themen 9
C Dynamische Operatoren! Java Basics - Anfänger-Themen 5
R dynamische Variablennamen Java Basics - Anfänger-Themen 3
M dynamische, assziative Arrays Java Basics - Anfänger-Themen 2
I dynamische mehrdimensionales Array Java Basics - Anfänger-Themen 8
H Unterschied statischer/dynamische Typ einer Variablen Java Basics - Anfänger-Themen 2
H statische,dynamische Bindung Java Basics - Anfänger-Themen 4
0 Dynamische Speicherverwaltung Java Basics - Anfänger-Themen 4
B Dynamische If Anweisung Java Basics - Anfänger-Themen 13
B Dynamische Variable Java Basics - Anfänger-Themen 12
C Dynamische Arraygröße Java Basics - Anfänger-Themen 2
M dynamische tabellen Java Basics - Anfänger-Themen 2
G Java dynamische Arrays?? Java Basics - Anfänger-Themen 2
G Größenveränderung bei JFrame gleichmäßig Java Basics - Anfänger-Themen 3
D Komponenten, Module, Begrifferklärung Java Basics - Anfänger-Themen 4
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
danieldemetry Java - Graph Komponenten - Ausgabe Java Basics - Anfänger-Themen 0
C Einbinden von Komponenten mit Maven Java Basics - Anfänger-Themen 3
V Alle Komponenten eines JPanels Java Basics - Anfänger-Themen 14
T Optionale Komponenten Java Basics - Anfänger-Themen 8
M GUI- mehrere Komponenten auf Container adden Java Basics - Anfänger-Themen 2
P JavaFX - Komponenten skalieren Java Basics - Anfänger-Themen 16
J Klassen Hilfe bei unbekannten Zeilen bzgl. Klassen / Komponenten Java Basics - Anfänger-Themen 12
I komponenten werden in JFrame nicht richtig angezeigt Java Basics - Anfänger-Themen 1
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
D JFrame, Komponenten verschmiert. Java Basics - Anfänger-Themen 15
N JTable - Zellfarben ändern, GUI-Komponenten in Zellen einfügen Java Basics - Anfänger-Themen 5
M Komponenten irgendwo versteckt? Java Basics - Anfänger-Themen 7
O swing komponenten werden nicht angezeigt Java Basics - Anfänger-Themen 6
MU5T4NG Komponenten in Schleife ansprechen Java Basics - Anfänger-Themen 13
B Tabelle, Größe der Komponenten Java Basics - Anfänger-Themen 2
D Wie genau kann ich in Java Komponenten entwickeln? Java Basics - Anfänger-Themen 6
P Scrollpane mit dynamisch erzeugten Komponenten Java Basics - Anfänger-Themen 3
M Fixe Position von GUI Komponenten ? Java Basics - Anfänger-Themen 9
Weiti Anzeige von komponenten erst bei Mouse-Over Java Basics - Anfänger-Themen 3
N Anordnug der Komponenten mit NetBeans Java Basics - Anfänger-Themen 9
M Obsolete Komponenten feststellen? Java Basics - Anfänger-Themen 3
X GridBagLayout Komponenten Anordnungsproblem Java Basics - Anfänger-Themen 4
L Komponenten in Layoutmanagern zentrieren Java Basics - Anfänger-Themen 5
J Probleme mit Visual Editor Komponenten auf Panel legen Java Basics - Anfänger-Themen 4
J Komponenten andordnen Java Basics - Anfänger-Themen 2
K Koordinaten von Swing Komponenten Java Basics - Anfänger-Themen 2
G Komponenten Java Basics - Anfänger-Themen 2
A Komponenten nur sporadisch sichtbar beim starten Java Basics - Anfänger-Themen 2
I Swing-Komponenten-Größe im GridBagLayout beschränken Java Basics - Anfänger-Themen 2
N GridBagLayout: gleichmäßige verteilung von Komponenten Java Basics - Anfänger-Themen 23
S Auf JButtonBar komponenten ausrichten, größe festlegen? Java Basics - Anfänger-Themen 5
S Wie komponenten positionieren? Java Basics - Anfänger-Themen 6
B Komponenten im LayoutManager zentrieren Java Basics - Anfänger-Themen 5
G Seit Java6 wird der Text von komponenten komisch dargestellt Java Basics - Anfänger-Themen 11
Q Beste Komponenten für 3-Schichten-Architektur gesucht Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben