Letztes erstelltes Element fensterfüllend!

Signum

Grünschnabel
Hallo!
Mein Problem ist folgendes:
Das letzte im Quellcode aufgeführte GUI-Element füllt das ganze Fenster aus.
Wenn ich typAuswahlefenster.show() weglasse, erscheinen die Grafikelemente im Fenster erst, wenn ich mit der Maus drüberfahre bzw. anklicke und das letzte Element erscheint garnicht. (In diesem Fall der "beenden"-Button).
Es ist bestimmt ein simpler Fehler, ich bin schließlich noch Anfänger, aber ich bitte doch um Abhilfe. Andere Projekte weisen dieselben Symptome auf. Ich benutze das J2SE-SDK 1.4.2_05.


Code:
/*
 * Created on 18.07.2004
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author -------------------------
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

import javax.swing.*;
import java.awt.event.*;

public class Vorauswahl
{
	static void auswahlfensterTyp()
	{
		final JFrame typAuswahlfenster = new JFrame( "Vorkalkulation 2004" );
		typAuswahlfenster.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		typAuswahlfenster.setLocation( 1024 / 2 - 300 / 2, 768 / 2 - 210 / 2 );
		typAuswahlfenster.setSize( 300, 210 );
		typAuswahlfenster.setVisible( true );
		typAuswahlfenster.setResizable( true );
	
		final JRadioButton din = new JRadioButton( "Din-Schrauben" );
		din.setLocation( 20, 20 );
		din.setSize( 200, 20 );
		din.setSelected( true );
	
		final JRadioButton dinÄhnlich = new JRadioButton( "Din-ähnliche Schrauben" );
		dinÄhnlich.setLocation( 20, 40 );
		dinÄhnlich.setSize( 200, 20 );
	
		final JRadioButton sonderMitKopf = new JRadioButton( "Sonderschrauben mit Kopf" );
		sonderMitKopf.setLocation( 20, 60 );
		sonderMitKopf.setSize( 200, 20 );
	
		final JRadioButton sonderOhneKopf = new JRadioButton( "Sonderschrauben ohne Kopf" );
		sonderOhneKopf.setLocation( 20, 80 );
		sonderOhneKopf.setSize( 200, 20 );
	
		final ButtonGroup typ = new ButtonGroup();
		typ.add( din );
		typ.add( dinÄhnlich );
		typ.add( sonderMitKopf );
		typ.add( sonderOhneKopf );
	
		JButton weiter = new JButton( "weiter" );
		weiter.setLocation( 20, 100 );
		weiter.setSize( 80, 25 );
	
		JButton beenden = new JButton( "beenden" );
		weiter.setLocation( 120, 100 );
		weiter.setSize( 80, 25 );
	
		typAuswahlfenster.getContentPane().add( din );
		typAuswahlfenster.getContentPane().add( dinÄhnlich );
		typAuswahlfenster.getContentPane().add( sonderMitKopf );
		typAuswahlfenster.getContentPane().add( sonderOhneKopf );
		typAuswahlfenster.getContentPane().add( weiter );
		typAuswahlfenster.getContentPane().add( beenden );

	
		ActionListener beendenbutton = new ActionListener()
		{
			public void actionPerformed( ActionEvent e )
			{
				System.exit( 0 );
			}
		};
	
		ActionListener weiterbutton = new ActionListener()
		{
			public void actionPerformed( ActionEvent e )
			{
				if ( din.isSelected() == true )
					JOptionPane.showMessageDialog( null, "Sie haben \"Din-Schrauben\" ausgewählt." );
				if ( dinÄhnlich.isSelected() == true )
					JOptionPane.showMessageDialog( null, "Sie haben \"Din-ähnliche Schrauben\" ausgewählt." );
				if ( sonderMitKopf.isSelected() == true )
					JOptionPane.showMessageDialog( null, "Sie haben \"Sonderschrauben mit Kopf\" ausgewählt." );
				if ( sonderOhneKopf.isSelected() == true )
					JOptionPane.showMessageDialog( null, "Sie haben \"Sonderschrauben ohne Kopf\" ausgewählt." );
			}
		};
	
		beenden.addActionListener( beendenbutton );
		weiter.addActionListener( weiterbutton );
		
		typAuswahlfenster.show();

	}
}

Danke im Voraus

Hügo
 
Hallo!

Das liegt daran, dass du keinen Layoutmanager verwendest.
Standardmäßig verwendet der JFrame im ContentPane das BorderLayout.

Dieses bietet Platz für 5 Elemente (South, North, West, East, Center) bzw. Positioniert diese an den jeweiligen Orientierungspunkten.

Wenn du nun nur 5 Elemente hättest könntest du jedes Element nach dem Muster

Code:
typAuswahlfenster.getContentPane().add( myComponent0, BorderLayout.Center);
typAuswahlfenster.getContentPane().add( myComponent1, BorderLayout.North);
typAuswahlfenster.getContentPane().add( myComponent2, BorderLayout.South);
typAuswahlfenster.getContentPane().add( myComponent3, BorderLayout.East);
typAuswahlfenster.getContentPane().add( myComponent4, BorderLayout.West);

auf dem Panel ausrichten.

Da du jedoch 6 Elemente verwendest, solltest du entweder 2 oder mehrere Komponenten in einen Container stecken und dann wie oben verfahren oder eben einen entsprechenden anderen LayoutManager verwenden.

Gruß Tom
 

Neue Beiträge

Zurück