FlowLayout Alignment?!

mavinatic

Bekanntes Mitglied
Hallo Community,

ich habe ein Problem und zwar benutze ich ein FlowLayout und ein paar JButtons mit denen ich ein JTabbedPane nachbaue! Mein Problem ist ich möchte meine JButtons GANZ links am Rand des Programmes haben und möchte das der Abstand 0 ist aber irgendwie habe ich da noch lücken und weiß nicht wie ich sie ändern kann.

picps.jpg



Wie bekomme ich diese Lücken weg? FlowLayout flow = new FlowLayout(FlowLayout.LEFT,0,0) ist eingestellt.

Gruß

George
 

Monaria

Aktives Mitglied
Hast du vllt etwas Code oder mehr Infos?
Denn wenn ich einfach dein flow als Layoutmanager setze und Buttons zur ContentPane hinzufüge, dann sehe ich keine Lücken.
 
C

Camino

Gast
Könnte auch evtl. was mit den L&F zu tun haben.
Bei Nimbus hab ich z.B. einen Rand/Abstand um die Buttons, bei
Code:
UIManager.getSystemLookAndFeelClassName()
ist kein Abstand und die Buttons liegen direkt nebeneinander.
 

mavinatic

Bekanntes Mitglied
Hier ist einwenig Quelltext dort wo ich das Layout setze, kennt ihr ne Möglichkeit die Lücken zu schließen?
Java:
@Override
	public JPanel getUnderFunctionPanel() {
		// TODO Auto-generated method stub
		JPanel panel = new JPanel();
		panel.setBackground(new Color(119,136,153));
		panel.setLayout(new FlowLayout(FlowLayout.LEFT, 0,0));
		
		for(int i=0;i<button.length;i++) {
			if(buttonLabel[i].equals("|")) {
				button[i] = new JButton();
				button[i].setBackground(Color.white);
				button[i].setPreferredSize(new Dimension(10,70));
				panel.add(button[i]);
			} else {
				button[i] = new JButton(buttonLabel[i]);
				button[i].setPreferredSize(new Dimension(70,70));
				button[i].setToolTipText(buttonLabel[i]);
				panel.add(button[i]);
			}			
		}
		return panel;
	}
 

jgh

Top Contributor
Das hilft imho alles nicht viel...wie du am Bsp da unten erkennen könntest, macht sowohl deine Methode [c]getUnderFunctionPanel()[/c], als auch meine kurz implementierte Methode, genau das...was du willst.
Egal wie du den JFrame veränderst oder verschiebst...er packt die JButtons ganz nach links und füllt dann einfach auf.

Dein Problem wird nicht in diesem Panel liegen, sondern wahrscheinlich im Layout des Panels/Frames in dem dein "UnderFunctionPanel" liegt.

Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class FlowLayoutEx {
	JButton[] button = new JButton[100];

	public FlowLayoutEx() {
		JFrame f = new JFrame();
		f.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setSize(300, 300);
		f.setExtendedState(JFrame.MAXIMIZED_BOTH);
		for (int i = 0; i < 200; i++) {
			JButton b = new JButton((i + 1) + ". Button");
			f.add(b);
		}
		//die For-Schleife komplett auskommentieren und die folgende Zeile einkommentieren!
		// f.add(getUnderFunctionPanel());
		f.setVisible(true);
	}

	public static void main(String[] args) {
		new FlowLayoutEx();
	}

	public JPanel getUnderFunctionPanel() {
		// TODO Auto-generated method stub
		JPanel panel = new JPanel();
		panel.setBackground(new Color(119, 136, 153));
		panel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));

		for (int i = 0; i < button.length; i++) {
			button[i] = new JButton();
			button[i].setBackground(Color.white);
			button[i].setPreferredSize(new Dimension(10, 70));
			panel.add(button[i]);
		}
		return panel;
	}
}
 

mavinatic

Bekanntes Mitglied
Hey ihrs, hier ist das darunter liegende Panel :) Wenn euch der QUelltext hilft evtl.

Java:
package org.gk.dms.gui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.SwingConstants;


public class MainPanel extends JPanel {
	private JPanel menuPanel = new JPanel();
	private JPanel contentPanel = null;
	private JPanel mainFunctionPanel = new JPanel();
	private JPanel underFunctionPanel = null;
	
	private String[] mainButtonLabels = new String[] { "Menu", "Archive", "Search", "Manage"};
	private JButton[] mainButtons = new JButton[mainButtonLabels.length];
	
	private MyButtonListener listener = new MyButtonListener(this);
	
	public MainPanel() {
		init();
		initMenuPanel();
		initContentPanel();
	}
	
	private void init() {
		this.setLayout(new BorderLayout());
	}

	private void initMenuPanel() {
		menuPanel.setPreferredSize(new Dimension(800,100));
		menuPanel.setLayout(new BorderLayout());
			/* MainFunctionPanel */
			mainFunctionPanel.setPreferredSize(new Dimension(800,30));
			mainFunctionPanel.setLayout(new FlowLayout(FlowLayout.LEFT,1,0));
			mainFunctionPanel.setBackground(new Color(51,153,255));
			for(int i=0;i<mainButtons.length;i++) {
				if(i==0) {
					mainButtons[i] = new JButton(mainButtonLabels[i]);
					mainButtons[i].setVerticalAlignment(SwingConstants.TOP);
					mainButtons[i].setPreferredSize(new Dimension(50,50));
					mainButtons[i].addActionListener(listener);
					mainFunctionPanel.add(mainButtons[i]);
				}else {
					mainButtons[i] = new JButton(mainButtonLabels[i]);
					mainButtons[i].setVerticalAlignment(SwingConstants.TOP);
					mainButtons[i].setPreferredSize(new Dimension(100,50));
					mainButtons[i].addActionListener(listener);
					mainFunctionPanel.add(mainButtons[i]);
				}
			}
		
				
			
			menuPanel.add(BorderLayout.NORTH, mainFunctionPanel);
			
			if(underFunctionPanel!=null) {
				menuPanel.add(BorderLayout.CENTER, underFunctionPanel);
			}
			
		this.add(BorderLayout.NORTH, menuPanel);
	}
	
	private void initContentPanel() {
		if(contentPanel!=null) {
			this.add(BorderLayout.CENTER, contentPanel);
		}
	}
	
	public void setUnderFunctionPanel(JPanel panel) {
		underFunctionPanel = panel;
		menuPanel.removeAll();
		mainFunctionPanel.removeAll();
		initMenuPanel();
		this.revalidate();
		this.repaint();
	}
	
	public void setContentPanel(JPanel panel) {
		if(contentPanel!=null) {
			contentPanel.removeAll();
		}
		contentPanel=panel;
		initContentPanel();
		this.revalidate();
		this.repaint();
	}
	
	
}
 

mavinatic

Bekanntes Mitglied
API habe ich mir schon angeguckt und mit setVGAB / set HGAB probiert, aber wie du siehst, siehts nach nichts aus :)

Deswegen wende ich mich ja an euch :p

mfg george
 

jgh

Top Contributor
deine Ursprungsfrage lautete:


"Mein Problem ist ich möchte meine JButtons GANZ links am Rand des Programmes haben und möchte das der Abstand 0 ist aber irgendwie habe ich da noch lücken und weiß nicht wie ich sie ändern kann.
Wie bekomme ich diese Lücken weg?"


Dein MainPanel in einem JFrame gepackt ergibt dieses Bild:

dein MainPanel in einem JFrame mit FlowLayout gepackt, ergibt das folgende Bild:

Die Buttons sind immer ganz links angeordnet...Problem gelöst :D
selbst wenn du den JFrame einem JApplet addest, dürfte es genauso aussehen...!

[java=69] private void initContentPanel() {
if (contentPanel != null) {
this.add(BorderLayout.CENTER, contentPanel);
}
}[/code]
in einer
Code:
initContentPanel()
-Methode, erwarte ich (evtl. zu Unrecht?) dass das ContentPanel initialisiert wird, also sowas wie [c]contentPanel = getContentPanel()// new BlaBlaPanel() [/c] oder was auch immer, und nicht das es auf gegen null geprüft wird, und dann irgendwo geaddet wird.

genauso deine setUnderFunctionPanel()-Methode:
Java:
public void setUnderFunctionPanel(JPanel panel) {
		underFunctionPanel = panel;
		menuPanel.removeAll();
		mainFunctionPanel.removeAll();
		initMenuPanel();
		this.revalidate();
		this.repaint();
	}
Was für wilde Sachen machst du da.... :D in einer setXYZ Methode, erwarte ich (wahrscheinlich wieder zu Unrecht), dass dort XYZ gesetzt wird, und nicht in menuPanel und mainPanel alles removed wird, die initMenuPanel() aufgerufen wird, und das ganze Panel revalidated und repaint wird.

hier mal ein Bsp. wie man sowas machen könnte...
Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ExampleJFrame {
	JFrame frame;
	JPanel mainPanel, menuPanel;

	public static void main(String[] args) {
		new ExampleJFrame();
	}

	public ExampleJFrame() {
		initFrame();
		initMenuPanel();
		initMainPanel();
		addingPanelsToFrame();
		frame.setVisible(true);
	}

	private void initFrame() {
		frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationRelativeTo(null);
		frame.setSize(300, 300);
	}

	private void initMenuPanel() {
		menuPanel = new JPanel();
		menuPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
		for (int i = 0; i < 5; i++) {
			JButton b = new JButton((i + 1) + ". Menu");
			if (i == 0) {
				b.setPreferredSize(new Dimension(200, 50));
			} else {
				b.setPreferredSize(new Dimension(100, 50));
			}

			menuPanel.add(b);
		}
	}

	private void initMainPanel() {
		mainPanel = new JPanel();
		mainPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
		for (int i = 0; i < 20; i++) {
			JButton b = new JButton(i + "");
			b.setPreferredSize(new Dimension(100, 50));
			mainPanel.add(b);
		}
	}

	private void addingPanelsToFrame() {
		frame.add(menuPanel, BorderLayout.NORTH);
		frame.add(mainPanel, BorderLayout.CENTER);

	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
R LayoutManager JSeparator in FlowLayout AWT, Swing, JavaFX & SWT 4
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
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
O GroupLayout - TRAILING Alignment AWT, Swing, JavaFX & SWT 2
L Swing Component alignment innerhalb einer JList AWT, Swing, JavaFX & SWT 3
G LayoutManager Layout welches von Links nach rechts anordnet mit TOP Alignment! AWT, Swing, JavaFX & SWT 5
B Problem mit Alignment in JTable AWT, Swing, JavaFX & SWT 2
F GridBagLayout layout alignment AWT, Swing, JavaFX & SWT 3
B SWT Problem mit Alignment/Size AWT, Swing, JavaFX & SWT 3
J JTextPane Alignment AWT, Swing, JavaFX & SWT 6
thE_29 JComboBox alignment AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben