JSplitpane .

Status
Nicht offen für weitere Antworten.

Outlaw

Mitglied
Hallöle,

hab ne JSplitPane angelegt, vertikal geteilt -> links und rechts jeweils JScrollPane mit JTable eingefügt.
Funktioniert grundsätzlich. Das Problem ist, dass die linke Tabelle nicht bündig am linken Rand des Hauptfensters anfängt, sondern leicht versetzt.
Finde beim besten Willen nicht den Grund ...

Grüße

Outlaw
 

Outlaw

Mitglied
Hallöle,

semi hat gesagt.:
Zeig mal Code. (vielleicht irgendein Border?)

Code:
import javax.swing.*;
import java.awt.*;

class FMSJava extends JFrame
{
	static JFrame Hauptfenster;
	JPanel window;								// Das ist der Container, der alles wichtige enthält
	JMenuBar Menuzeile;							// Wird die Menuzeile, die in window erzeugt wird
	JSplitPane Dateifenster;						// Ein gesplitteter Container, der Dateien später darstellt
	JTextField Commandozeile;						// und unten dann die obligatorische Kommandozeile
	JScrollPane linkesFenster;
	JScrollPane rechtesFenster;
	JTable Dateiinforechtesfenster;
	JTable Dateiinfolinkesfenster;
	FMSEintrag DateiEintrag_links;
	FMSEintrag DateiEintrag_rechts;
	
	
	public void createMenubar()
	{
		Menuzeile = new JMenuBar();
		JMenu leftwindow = new JMenu ("Left");
		Menuzeile.add(leftwindow);
		window.add(Menuzeile);						// und nun das Element dem Container hinzufügen
	}
	
	
	public void createDateifenster()
	{
		Dateifenster = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
		Dateifenster.setPreferredSize(new Dimension(640,460));
		
		DateiEintrag_links = new FMSEintrag();				// FMSEintrag ist eine das Interface TableModel ausfüllende Klasse zur Definition der Tabelleneinträge
		DateiEintrag_rechts = new FMSEintrag();
		
		// Das linke Fenster ..
		Dateiinfolinkesfenster = new JTable(DateiEintrag_links);	// Die Tabelle mit Verzeichnis-infos fürs linke Fenster
		Dateiinfolinkesfenster.setGridColor(new Color(0xFFF600));
		Dateiinfolinkesfenster.setForeground(new Color(0xFFF600));
		Dateiinfolinkesfenster.setBackground(new Color(0x415EA8));
		Dateiinfolinkesfenster.setFont(new Font("Arial",Font.PLAIN,14));
		Dateiinfolinkesfenster.setShowVerticalLines(true);
		Dateiinfolinkesfenster.setShowHorizontalLines(false);
		
		linkesFenster = new JScrollPane(Dateiinfolinkesfenster, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		linkesFenster.setPreferredSize(new Dimension(320,330));

		// Das rechte Fenster .. Eine Tabelle enthält Verzeichnisinfos, und falls sie zu groß ist, wird sie in ein Scrollpane gelegt
		Dateiinforechtesfenster = new JTable(DateiEintrag_rechts);
		rechtesFenster = new JScrollPane(Dateiinforechtesfenster, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		rechtesFenster.setPreferredSize(new Dimension(320,330));
		
		// Das SplitPane konfigurieren ...
		Dateifenster.setLeftComponent(linkesFenster);			// Die Splitpane hat 2 Teile - links/top die eine Componente, rechts/unten die andere
		Dateifenster.setRightComponent(rechtesFenster);
		Dateifenster.setDividerLocation(0.5);				// Ja, wo ist denn der Divider !
		Dateifenster.setResizeWeight(0.5);				// Wie wird der Platz verteilt, wenn sich das Fenster vergrößert .. welcher Teil des Splitpane bekommt was ..
		Dateifenster.setDividerSize(10);				// Größe des Trenners
		window.add(Dateifenster);
	}

	public void createCommando()
	{
		Commandozeile = new JTextField(1);
		window.add(Commandozeile);		
	}

	public FMSJava()							// Konstruktor
	{
		super("Filemanager");			// Hauptfenster-Bezeichnung

		window = new JPanel();					        // das wird der Hauptcontainer im JFrame
		BoxLayout Ausrichtung = new BoxLayout(window,BoxLayout.Y_AXIS); // alle Elemente werden vertikal geordnet
		window.setLayout(Ausrichtung);					// damit sagen wir es dem Container
		createMenubar();
		createDateifenster();
		createCommando();
		this.setContentPane(window);					// was wird im JFrame angezeigt -> der window-Container
		this.setPreferredSize(new Dimension(640,480));
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		// wenn Fenster geschlossen wird - Exit (standardmäßig implementiert)
		this.pack();
	}
	
	public static void main(String args[])
	{
		Hauptfenster = new FMSJava();					// so muss ein Swing-App initialisiert werden
	}
}

Hier mal nen screenshot:



Der rote Bereich ist der "Fehler".

Sorry, der Code ist übelst häßlich :oops: , bin gerade erst dabei, mich in JAVA einzufummeln :###



Grützi

Outlaw
www.yakuza.de.be
 

semi

Top Contributor
Mach mal

Hauptfenster.setJMenuBar(Menuzeile);
statt
window.add(Menuzeile);

-------------
Vielleicht eine Bemerkung zum Codestill
Schreibe Variablen bzw. Klassenattribute mit Kleinbuchstaben am Anfang.
Sie sind dann besser von Klassennamen zu unterscheiden.
 

Outlaw

Mitglied
Hallöle,

semi hat gesagt.:
Mach mal

Hauptfenster.setJMenuBar(Menuzeile);
statt
window.add(Menuzeile);

hm .. jetzt ist (was auch sehr schön ist :D) der "Left"-Menüpunkt linksbündig, am Dateifenster hat sich nix geändert ...

Gruß

Outlaw
 

Outlaw

Mitglied
Hallöle,

so, habe jetzt mal den Umweg über JPanel window weggelassen und setze die Komponenten gleich in JFrame Hauptfenster ... jetzt ist das Dateifenster linksbündig.

Was mich aber wundert: jetzt kann ich nicht mehr die Commandozeile hinzufügen.

Reihenfolge: setJMenuBar , Hauptfenster.add(Dateifenster), Hauptfenster.add(Commandozeile)

Dann zeigt er Commandozeile nich. Wenn ich .add(Dateifenster) zuletzt nehme, zeigt er nur die "riesige" Commandozeile und das Dateifenster nicht ... kann ich bloß zwei Elemente in JFrame packen ? Muss ich den Umweg über JPanel gehen ?

Gruß

Outlaw
 

Illuvatar

Top Contributor
Ich kenn mich mitm BoxLayout net aus, aber mach mal Zeile 74 setLayout (new BorderLayout()) obs daran liegt.
 

semi

Top Contributor
Das ganze Layout ist bei Dir viel zu umständlich.
Mach' mal sowas dieser Art
Code:
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
splitPane.setLeftComponent(new JScrollPane(table1, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
splitPane.setRightComponent(new JScrollPane(table2, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
this.getContentPane().add(splitPane, BorderLayout.CENTER);
this.getContentPane().add(textField, BorderLayout.SOUTH);
this.setJMenuBar(...);
...
 

Outlaw

Mitglied
Hallöle,

jo, ich mache das nochmal neu. Habe bloß alles mit expliziten Klassen gemacht, weil ich mir nicht sicher bin, auf welche ich später noch direkt zugreifen muss ...

Aber nochmal die Zwischenfrage: Muss ich zwingend dem JFrame nen anderen Container für JPanel hinzufügen, der Elemente aufnimmt, oder kann ich direkt mit JFrame über getContentPane arbeiten ?

Sehe das in tutorials immer ,dass die nen JPanel dem JFrame hinzufügen ..

Grützi

Outlaw

PS: der "Fehler" kommt immer, sobald ich BoxLayout etabliere ...
 

semi

Top Contributor
Brauchst Du nicht. ContentPane ist auch ein JPanel und ist leer mit BorderLayout initialisiert.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JTable im JSplitPane darstellen AWT, Swing, JavaFX & SWT 2
L JSplitPane Divider Location beim Maximieren AWT, Swing, JavaFX & SWT 6
M Buttons in JSplitPane hinzufügen AWT, Swing, JavaFX & SWT 6
L JSplitPane - auf Änderung reagieren AWT, Swing, JavaFX & SWT 4
D JSplitPane lässt sich nicht verschieben AWT, Swing, JavaFX & SWT 3
M Swing JSplitPane beide Seiten fixieren AWT, Swing, JavaFX & SWT 2
U Swing JPane und JScrollpane in JSplitpane-Seite: Scrollen funktioniert nicht AWT, Swing, JavaFX & SWT 3
D JSplitPane, Jtree, CardLayout (constraint must be a string) AWT, Swing, JavaFX & SWT 9
D JSplitPane -> setRightComponent aus anderer Klasse AWT, Swing, JavaFX & SWT 3
B JSplitPane AWT, Swing, JavaFX & SWT 4
J Swing Problem - Abspeichern JSplitPane Position AWT, Swing, JavaFX & SWT 5
Burny91 Swing Vertical JSplitPane lässt sich nicht nach rechts verschieben AWT, Swing, JavaFX & SWT 2
C JSplitPane Divider fixieren AWT, Swing, JavaFX & SWT 2
S JSplitpane in BorderLayout nutzen AWT, Swing, JavaFX & SWT 4
S JSplitPane rechtes JPanel aus subpanel ändern AWT, Swing, JavaFX & SWT 3
G JSplitPane DividerLocation AWT, Swing, JavaFX & SWT 2
P Swing JSplitPane mehrere Teiler AWT, Swing, JavaFX & SWT 3
W JSplitPane wegräumen AWT, Swing, JavaFX & SWT 5
T Swing JSplitPane Componenten ausrichten AWT, Swing, JavaFX & SWT 4
T Expand/Collape JSplitPane programmatically AWT, Swing, JavaFX & SWT 3
B JSplitPane mit max. Größe AWT, Swing, JavaFX & SWT 8
T Swing JSplitPane erstellen AWT, Swing, JavaFX & SWT 2
R JSplitPane automatisch ausblenden AWT, Swing, JavaFX & SWT 13
H Swing Darstellungsproblem JPanel in JPanel in JScrollpane in JSplitPane AWT, Swing, JavaFX & SWT 4
multiholle JSplitPane und MousListener AWT, Swing, JavaFX & SWT 8
S JSplitPane ändert Farbe nicht AWT, Swing, JavaFX & SWT 4
M JSplitPane Tabelle neu zeichnen AWT, Swing, JavaFX & SWT 3
G JSplitPane nur in eine richtung? AWT, Swing, JavaFX & SWT 3
T Probleme mit JSplitPane, JScrollPane, JTree AWT, Swing, JavaFX & SWT 3
G JSplitPane unf JTable automatisch anpassen AWT, Swing, JavaFX & SWT 2
H Look & Feel und JSplitPane Problem AWT, Swing, JavaFX & SWT 17
J JSplitpane separator soll nicht seine Position veraendern? AWT, Swing, JavaFX & SWT 3
J Border bei JSplitPane entfernen? AWT, Swing, JavaFX & SWT 2
A JSplitPane in JInternalFrame AWT, Swing, JavaFX & SWT 2
M JSplitPane ein JPanel hinzufügen und zentrieren. AWT, Swing, JavaFX & SWT 9
S JSplitPane mit einer Grenze AWT, Swing, JavaFX & SWT 4
T Probleme mit JSplitPane AWT, Swing, JavaFX & SWT 4
DeeDee0815 JSplitPane.expandTopLeftRightOrBottomComponent(); AWT, Swing, JavaFX & SWT 2
C JSplitPane automatische Veränderung verbieten. AWT, Swing, JavaFX & SWT 3
O JSplitPane und JTabbedPane AWT, Swing, JavaFX & SWT 8
G JSplitPane - setOneTouchExpandable AWT, Swing, JavaFX & SWT 3
N JSplitPane soll JFrame resizen AWT, Swing, JavaFX & SWT 4
S Eine Art JInternalFrame in JSplitPane AWT, Swing, JavaFX & SWT 3
S SWT <=> JSplitPane AWT, Swing, JavaFX & SWT 4
M Ansichtswechsel in JSplitPane AWT, Swing, JavaFX & SWT 2
M JSplitPane und JList aktualisieren AWT, Swing, JavaFX & SWT 4
S JDesktopPane mit JSplitPane und JTree AWT, Swing, JavaFX & SWT 3
H JSplitPane lässt sich nicht über rechtes Panel ziehen AWT, Swing, JavaFX & SWT 2
T 3-teiliges JSplitPane AWT, Swing, JavaFX & SWT 13
B BorderLayout/JSplitPane Problem beim Ausrichten AWT, Swing, JavaFX & SWT 5
B Component in JSplitPane aktualisieren AWT, Swing, JavaFX & SWT 2
J JSplitPane reagiert nicht auf SetDeviderLocation() AWT, Swing, JavaFX & SWT 2
J JSplitPane Felder ansprechen AWT, Swing, JavaFX & SWT 3
C JSplitPane / JTabbedPane Größe AWT, Swing, JavaFX & SWT 3
M JSplitPane Divider setzen? AWT, Swing, JavaFX & SWT 3
G Weiches automatisches verschieben eines JSplitPane-Dividers? AWT, Swing, JavaFX & SWT 3
T JSplitPane immer gleich groß machen AWT, Swing, JavaFX & SWT 3
A problem mit update nach event, JSplitpane spinnt AWT, Swing, JavaFX & SWT 2
D Probleme bei JSplitPane mit JScrollPanes und Panels. AWT, Swing, JavaFX & SWT 4
R JSplitPane problem AWT, Swing, JavaFX & SWT 3
R JSplitPane setRightComponent AWT, Swing, JavaFX & SWT 2
R JSplitPane (linke und rechte Seite) AWT, Swing, JavaFX & SWT 4
T JSplitPane & JTable AWT, Swing, JavaFX & SWT 4
M JSplitPane Listener AWT, Swing, JavaFX & SWT 2
V JTable in JSplitPane? Wie AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben