Buttons zu groß

HeinerPyt

Erfahrenes Mitglied
Hi,

Ich habe eine Oberfläche mit 3 Panel erstellt. (sieh code)

Code:
package Astronomie;

import java.awt.*;

import javax.swing.*;



//-------------------------------------------------------------------------
//- Diese Klasse berechnet das julianische Datum                          -
//-------------------------------------------------------------------------



public class julianisch extends JFrame
{
	public julianisch( int x, int y )
	{
		setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); 
	    setSize( x, y ); 
	    Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
	    setLocation( (d.width  - getSize().width ) / 2, 
	                 (d.height - getSize().height) / 2 ); 
	  } 
	 
	  public static void init_window() 
	  { 

		    JFrame win = new julianisch(400,300);
		    win.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		    win.setTitle("Berechnet Julianisches Datum");

		    Panel panel1 = new Panel();
			panel1.setBackground(Color.BLACK);
		    panel1.setLayout(new GridLayout(3,2));
		    
			JLabel L1 = new JLabel("Jahreszahl:");
		    JLabel L2 = new JLabel("Monat:");
		    JLabel L3 = new JLabel("Tag:");
		    JLabel L4 = new JLabel("Ergebnis:");
		    
		    L1.setFont(new Font("Serif",Font.BOLD,20));
		    L1.setForeground(Color.MAGENTA);
		    L2.setFont(new Font("Serif",Font.BOLD,20));
		    L2.setForeground(Color.MAGENTA);
		    L3.setFont(new Font("Serif",Font.BOLD,20));
		    L3.setForeground(Color.MAGENTA);
		    L4.setFont(new Font("Serif",Font.BOLD,20));
		    L4.setForeground(Color.RED);
		    
		    JTextField TJahr = new JTextField(10);
		    JTextField TMonat = new JTextField(10);
		    JTextField TTag = new JTextField(10);
		    JTextField TErg = new JTextField(10);
		    
		    JButton BEnd = new JButton("Ende");
		    JButton BRech = new JButton("Berechnen");
		    
		    
		    panel1.add(L1);
		    panel1.add(TJahr);
		    panel1.add(L2);
		    panel1.add(TMonat);
		    panel1.add(L3);
		    panel1.add(TTag);
		    
		    Panel panel2 = new Panel();
		    panel2.setLayout(new GridLayout(1,1));
		    panel2.add(L4);
		    panel2.add(TErg);
		    
		    Panel panel3 = new Panel();
		    panel3.setLayout(new BorderLayout());
		    panel3.add(BRech, BorderLayout.WEST);
		    panel3.add(BEnd, BorderLayout.EAST);
		    
		    win.setLayout(new GridLayout(3,1));		    
		    win.add(panel1);
		    win.add(panel2);
		    win.add(panel3);
//		    win.pack();
		    win.setVisible( true ); 
	  }
}

Die oberen 3 Zeilen (panel1) werden korrekt dargestellt. Das Panel 2 wird das Ergebnisfeld sehr hoch dargestellt, ebenso wie die beiden Buttons in Panel 3.

Ich vermute mal das liegt an dem layoutManger für das win. Gibt es eine Möglichkeit wie ich für jede Komponente innerhalb des Windows die Höhe und Breite (eventuell die Position) seperat darstellen kann? Wenn ja wie?

Danke
Heiner
 
Ja liegt es!

Das GridLayout gibt den drei Panels genau gleich viel Platz, dadurch sind Die Komponenten in den leereren Pannels größer.

Intreressant für dich könnten Group oder Box Layout sein. Die sind zwar etwas komplizierter, ermöglichen aber mehr Freiheiten.

Grid Layout solltets du nur verwenden wenn alle enthaltenen Komponenten gleich groß sein sollen.

Oft bietet sich auch ein BorderLayout an, wobei du hier beachten musst dass die Komponenten an unterschiedlichen Positionen unterschiedlich stark resized werden.
 
Sehr vielseitig ist das TableLayout. Musst du aber importieren. Es gibt viele Tutorials dazu, wie man es benutzt. Das bekanntest Tutorial ist denk ich TableDancer.
 
Falls du aber das Layout nicht ändern möchtest sondern nur die Größe der Buttons festlegen willst, kannst du das auch ganz simpel über "button.setPrefferedSize( new Dimension( [breite], [höhe] ) )" machen. Wenn's damit nicht klappt versuch es mit setMaximumSize( new Dimension( [breite], [höhe] ) )
 
Hört sich nicht schlecht an.

Sehr vielseitig ist das TableLayout. Musst du aber importieren. Es gibt viele Tutorials dazu, wie man es benutzt. Das bekanntest Tutorial ist denk ich TableDancer.

Wenn du mir jetzt noch sagen kannst wie ich den in Eclipse verwende binich wunschlos glücklich. Habe die Tablelayout.jar runtergeladen.
 
Zurück