LayoutManager JSeparator in FlowLayout

reason4u2

Mitglied
Hi,

ich hab ein Problem mit dem JSeparator in einem FlowLayout und nach langer Suche und Rumprobieren keine Lösung gefunden :/

Also, ich habe ein BorderLayout, im Center befindet sich ein CardLayout(unwichtig) und im Süden ein FlowLayout(.RIGHT) mit 2 Buttons zum switchen der Cards, jetzt wollte ich einfach eine Trennlinie zwichen den Layouts haben, und zwar am oberen Rand des FlowLayout, über den Buttons.

Leider setzt sich der Separator immer nur vor die Buttons und ist nicht sichtbar, hab schon alles probiert, setVisible und die breite geändert, das FlowLayout ausgetauscht, aber nichts geht :-(

Hier noch das Bild vom unterem Bereich, ich denke ihr wisst wo ich gern die Linie hätte ?
 

Anhänge

  • JSeparator.PNG
    JSeparator.PNG
    9,7 KB · Aufrufe: 42

L-ectron-X

Gesperrter Benutzer
Wenn sich der JSeparator vor die Buttons setzt, solltest du den LayoutManager wechseln bzw. noch ein weiteres BorderLayout einschachteln.

Aber vorher kannst du mal noch so ins Blaue probieren:
Java:
seprarator.setPreferredSize(new Dimension(this.getWidth(), separator.getPreferredSize());
Setzt dem JSeparator neue Dimensionen (vermutlich, hat er keine, oder zu geringe Dimensionen).
Code:
this
ist in dieser Anweisung das einbettende JPanel. Sollte
Code:
getPreferredSize()
nichts bringen, kannst du da auch mal eine 2 oder 3 probieren.

Es kann aber auch sein, dass du erst den Sepataror in die GUI einbaust, wenn sie schon sichtbar ist.
Dann muss danach ein
Code:
validate();
folgen, damit er in die Berechnungen des LayoutManagers einbezogen wird.
Am Besten ist immer, wenn die GUI erst sichtbar gemacht wird, wenn alle Komponenten hinzugefügt wurden.
 

reason4u2

Mitglied
Das hatte ich auch schon Versucht, aber es geht trozdem nicht, und frame.setVisible(true) setzt ich immer erst nachdem alles geladen ist. Ich weiß jetzt nicht wie du das mit dem BorderLayout meinst, hier mal der Code:

Java:
imports*

public class ServerFrame {

	private JFrame frame;
	
	private int currentCard;
	private JPanel cardPanel;
	private CardLayout cardLayout;
	
	private StartPanel startPanel;
	private JButton btnZurck;
	private JButton btnWeiter;
	private JSeparator separator;

	public ServerFrame() {
		initialize();
	}

	private void initialize() {
		frame = new JFrame();
		frame.setResizable(false);
		frame.setSize(550, 350);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(new BorderLayout(0, 0));
		
		JPanel buttonPanel = new JPanel();
		buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT, 5, 5));
		
		separator = new JSeparator();
		separator.setOrientation(SwingConstants.VERTICAL);
                //separator.setPreferredSize(new Dimension(buttonPanel.getWidth(), 3); hilft leider nicht
		buttonPanel.add(separator);
		
		btnZurck = new JButton("Zur\u00FCck");
		btnZurck.setEnabled(false);
		buttonPanel.add(btnZurck);
		
		btnWeiter = new JButton("Weiter");
		btnWeiter.setEnabled(false);
		buttonPanel.add(btnWeiter);
		
		startPanel = new StartPanel();
		
		currentCard = 1;
		cardPanel = new JPanel();
		cardPanel.setLayout(cardLayout = new CardLayout(5, 5));
		cardPanel.add(startPanel);
		
		frame.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
		frame.getContentPane().add(cardPanel, BorderLayout.CENTER);
	}
	
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
					ServerFrame window = new ServerFrame();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
}
 

L-ectron-X

Gesperrter Benutzer
In deinem Code wird der JSeparator vertikal ausgerichtet (von oben nach unten).

Ich hatte mir das so gedacht:
Java:
import java.awt.*;
import javax.swing.*;
 
public class ServerFrame {
 
    private JFrame frame;
    
    private int currentCard;
    private JPanel cardPanel;
    private CardLayout cardLayout;
    
    private StartPanel startPanel;
    private JButton btnZurck;
    private JButton btnWeiter;
 
    public ServerFrame() {
        initialize();
    }
 
    private void initialize() {
        frame = new JFrame("ServerFrame");
        frame.setResizable(false);
        frame.setSize(550, 350);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
        JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 5));
        
        btnZurck = new JButton("Zur\u00FCck");
        btnZurck.setEnabled(false);
        buttonPanel.add(btnZurck);
        
        btnWeiter = new JButton("Weiter");
        btnWeiter.setEnabled(false);
        buttonPanel.add(btnWeiter);
        
        startPanel = new StartPanel();
        
        currentCard = 1;
        cardPanel = new JPanel(new CardLayout(5, 5));
        cardPanel.add(startPanel);
        
        JPanel helperPanel = new JPanel(new BorderLayout());
        helperPanel.add(new JSeparator(SwingConstants.HORIZONTAL), BorderLayout.NORTH);
        helperPanel.add(buttonPanel, BorderLayout.SOUTH);
        
        frame.add(helperPanel, BorderLayout.SOUTH);
        frame.add(cardPanel, BorderLayout.CENTER);
        
        frame.setVisible(true);        
    }
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                    ServerFrame window = new ServerFrame();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

Sieht bei mir so aus:
 

Anhänge

  • JSeparator.png
    JSeparator.png
    5,7 KB · Aufrufe: 49
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Swing JSeparator in GroupLayout AWT, Swing, JavaFX & SWT 0
A Vertikaler JSeparator in einer JToolbar AWT, Swing, JavaFX & SWT 2
T Vertikaler JSeparator in FormLayout AWT, Swing, JavaFX & SWT 3
J JSeparator ist schüchtern. Will sich einfach net zeigen... AWT, Swing, JavaFX & SWT 4
frager2345 JTextLabel im Flowlayout verschieben AWT, Swing, JavaFX & SWT 4
A hilfe für flowlayout AWT, Swing, JavaFX & SWT 6
T Swing Größe einer Komponente in einem BoxLayout / FlowLayout festlegen AWT, Swing, JavaFX & SWT 7
P LayoutManager TextField.setSize(); in einem FlowLayout AWT, Swing, JavaFX & SWT 3
I BoxLayout, FlowLayout und Komponentengrößen AWT, Swing, JavaFX & SWT 1
M Problem mit FlowLayout, JLabel und JButton AWT, Swing, JavaFX & SWT 4
B FlowLayout Buttons verschieben? AWT, Swing, JavaFX & SWT 13
B Swing JScrollBar in einem JPanel mit FlowLayout AWT, Swing, JavaFX & SWT 15
M FlowLayout Alignment?! AWT, Swing, JavaFX & SWT 9
F AlignmentY bei FlowLayout AWT, Swing, JavaFX & SWT 8
P LayoutManager Komponenten einfügen (FlowLayout, BoxLayout) AWT, Swing, JavaFX & SWT 2
D Komponente im FlowLayout nicht mittig sondern rechts. Wie? AWT, Swing, JavaFX & SWT 4
C JPanel mit FlowLayout in JScrollPane - keinen Scrollbalken AWT, Swing, JavaFX & SWT 2
E LayoutManager FlowLayout mit angepassetr PreferedSize? AWT, Swing, JavaFX & SWT 3
aze FlowLayout:Lücken "schließen" AWT, Swing, JavaFX & SWT 2
O FlowLayout Button Event zuweisen? AWT, Swing, JavaFX & SWT 7
R FlowLayout: 1 Objekt pro Zeile AWT, Swing, JavaFX & SWT 5
N JTable in FlowLayout verweigert änderungen AWT, Swing, JavaFX & SWT 3
hdi FlowLayout Alternative AWT, Swing, JavaFX & SWT 10
0 Vertikales FlowLayout ? AWT, Swing, JavaFX & SWT 4
M Problem mit jPanel (FlowLayout) in ScrollPane AWT, Swing, JavaFX & SWT 4
E Mysthische Punkte auf JFrame(FlowLayout) nach Komboboxklick AWT, Swing, JavaFX & SWT 5
D Toolbars und Zeilenumbruch (benutze FlowLayout) AWT, Swing, JavaFX & SWT 2
I Vertical FlowLayout AWT, Swing, JavaFX & SWT 1
G position im FlowLayout AWT, Swing, JavaFX & SWT 11
rgubler Umbrechendes Flowlayout AWT, Swing, JavaFX & SWT 2
O Zeilenumbruch erzwingen (FlowLayout? AWT, Swing, JavaFX & SWT 1
K FlowLayout AWT, Swing, JavaFX & SWT 2
F FlowLayout in BorderLayout AWT, Swing, JavaFX & SWT 4
B FlowLayout ausrichtung | "Wasserzeichen" im JFrame AWT, Swing, JavaFX & SWT 8
R FlowLayout-Problem AWT, Swing, JavaFX & SWT 17
L LayoutManager ähnlich wie FlowLayout AWT, Swing, JavaFX & SWT 5
N Problem mit JScrollPane und JPane(FlowLayout) AWT, Swing, JavaFX & SWT 4
S toolbar - flowlayout problem AWT, Swing, JavaFX & SWT 5
M FlowLayout in BorderLayout einbinden? AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen


Oben