Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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.
Wie bekomme ich diese Lücken weg? FlowLayout flow = new FlowLayout(FlowLayout.LEFT,0,0) ist eingestellt.
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.
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;
}
}
"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
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.
Was für wilde Sachen machst du da.... 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);
}
}