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:
importjava.awt.Color;importjava.awt.Dimension;importjava.awt.FlowLayout;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JPanel;publicclassFlowLayoutEx{JButton[] button =newJButton[100];publicFlowLayoutEx(){JFrame f =newJFrame();
f.setLayout(newFlowLayout(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 =newJButton((i +1)+". Button");
f.add(b);}//die For-Schleife komplett auskommentieren und die folgende Zeile einkommentieren!// f.add(getUnderFunctionPanel());
f.setVisible(true);}publicstaticvoidmain(String[] args){newFlowLayoutEx();}publicJPanelgetUnderFunctionPanel(){// TODO Auto-generated method stubJPanel panel =newJPanel();
panel.setBackground(newColor(119,136,153));
panel.setLayout(newFlowLayout(FlowLayout.LEFT,0,0));for(int i =0; i < button.length; i++){
button[i]=newJButton();
button[i].setBackground(Color.white);
button[i].setPreferredSize(newDimension(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:
importjava.awt.BorderLayout;importjava.awt.Dimension;importjava.awt.FlowLayout;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JPanel;publicclassExampleJFrame{JFrame frame;JPanel mainPanel, menuPanel;publicstaticvoidmain(String[] args){newExampleJFrame();}publicExampleJFrame(){initFrame();initMenuPanel();initMainPanel();addingPanelsToFrame();
frame.setVisible(true);}privatevoidinitFrame(){
frame =newJFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setSize(300,300);}privatevoidinitMenuPanel(){
menuPanel =newJPanel();
menuPanel.setLayout(newFlowLayout(FlowLayout.LEFT,0,0));for(int i =0; i <5; i++){JButton b =newJButton((i +1)+". Menu");if(i ==0){
b.setPreferredSize(newDimension(200,50));}else{
b.setPreferredSize(newDimension(100,50));}
menuPanel.add(b);}}privatevoidinitMainPanel(){
mainPanel =newJPanel();
mainPanel.setLayout(newFlowLayout(FlowLayout.LEFT,0,0));for(int i =0; i <20; i++){JButton b =newJButton(i +"");
b.setPreferredSize(newDimension(100,50));
mainPanel.add(b);}}privatevoidaddingPanelsToFrame(){
frame.add(menuPanel,BorderLayout.NORTH);
frame.add(mainPanel,BorderLayout.CENTER);}}