Layouting

Status
Nicht offen für weitere Antworten.

Jürgen

Mitglied
Hi,

kann mir bitte jemand bei folgender Buttonanordnung- / Text- / Textfield-Anordnung helfen? Irgendwie bekomm ich das auch die Art nicht hin ( siehe Grafik ):

buttons.jpg


Erklärung dazu:
Hintergrundfarbe: hellgrau
Guthaben: Normaler Text
Feld dahinter: Feld, in dem das Guthaben ( wird berechnet ) angezeigt wird - darf nicht veränderbar sein
€: Auch wieder normaler Text
Jackpot: Normaler Text
Feld dahinter: Feld, in dem der Jackpot ( wird berechnet ) angezeigt wird - darf nicht veränderbar sein
3 große Felder: Hier sollen unterschiedliche Bilder angezeigt werden können.
Stop1, Stop2, Stop3: Buttons, die genau unter den 3 oberen Feldern liegen sollen.
Start: Button, der unter dem Stop3-Button liegen soll

Wenn möglich wäre es gut, wenn auch vom Aussehen her ( also TextFelder, Buttons und die Panels, wo später die Bilder angezeigt werden, mit schwarzem Rand und weiß ausgefüllt ) mit der Vorlage übereinstimmen würde.

Vielen Dank und freundliche Grüße,

Jürgen
 
B

Beni

Gast
Also ich schreib jetzt keinen Code, aber grundsätzlich kann man das so machen:

Man nimmt ein paar Components, die zusammengehören, (wie z.B. die 4 Labels und die 2 Textfelder oben links), und fügt sie zusammen einem Panel zu.
Dem Panel setzt man ein LayoutManager. (z.B. für die 6 Components oben links wäre GridBagLayout passend, für die 3 Panels die man in der Mitte erstellen würde, wäre wohl GridLayout gut).

Und dann fügt man wiederum die Panels zusammen... bis alle Components auf dem Fenster sind.
 

Jürgen

Mitglied
Hi Beni,

danke! Aber in der Theroie war mir das eigentlich auch klar, wie ich das machen muß. Nach langem rumprobieren und ohne dabei Erfolg zu haben, hab ich mich dann aber entschieden hier zu posten, damit's mir vielleicht jemand machen kann.

Ich denke, wenn ich dafür einen funktionierenden / passenden Quellcode sehe, dann kann ich mich an dem beim nächsten Mal orientieren und es auch selbst hinbekommen...

Vielleicht könnte mir ja jemand den Gefallen tun und den entsprechenden Code posten?!?!

Vielen Dank und Gruß,

Jürgen
 
B

Beni

Gast
Das ist nur für das Aussehen gut... zusammenflicken musst du das ganze selber.

Code:
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Main{
	public static void main( String[] args ){
		JFrame frame = createFrame();
		
		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		frame.setSize( new Dimension( 500, 600 ) );
		frame.setLocationRelativeTo( null );		
		frame.setVisible( true );

	}
	
	private static JFrame createFrame(){
		JFrame frame = new JFrame( "Example" );
		Container content = frame.getContentPane();
		content.setLayout( new GridBagLayout() );
		
		content.add( createTopLeft(), new GridBagConstraints( 0, 0, 1, 1, 
				1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
				new Insets( 5, 5, 5, 5 ), 0, 0 ));
		
		content.add( createMiddle(), new GridBagConstraints( 0, 1, 1, 1, 
				1.0, 100.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
				new Insets( 5, 0, 5, 0 ), 0, 0 ));
		
		content.add( new JButton( "stop" ), new GridBagConstraints( 0, 2, 1, 1,
				1.0, 1.0, GridBagConstraints.SOUTHEAST, GridBagConstraints.NONE,
				new Insets( 5, 5, 5, 10 ), 0, 0 ));
		
		return frame;
	}
	
	private static JComponent createTopLeft(){
		JPanel panel = new JPanel( new GridBagLayout());
		String[] labels = new String[]{ "Guthaben", "Jackpot" };
		
		for( int i = 0; i < labels.length; i++ ){
			panel.add( new JLabel( labels[i] ), new GridBagConstraints( 
				0, i, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.VERTICAL, 
				new Insets( 1, 1, 1, 1 ), 0, 0 ));
			
			JTextField field = new JTextField();
			field.setPreferredSize( new Dimension( 100, 5 ));
			
			panel.add( field, new GridBagConstraints( 
				1, i, 1, 1, 5.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, 
				new Insets( 1, 1, 1, 1 ), 0, 0 ));
			
			panel.add( new JLabel( "E" ), new GridBagConstraints( 
					2, i, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.VERTICAL, 
					new Insets( 1, 1, 1, 1 ), 0, 0 ));
		}
		
		return panel;
	}
	
	private static JComponent createMiddle(){
		JPanel panel = new JPanel( new GridLayout( 1, 3 ) );
		panel.add( createMiddle( "Stop1" ) );
		panel.add( createMiddle( "Stop2" ) );
		panel.add( createMiddle( "Stop3" ) );
		
		return panel;
	}
	
	private static JComponent createMiddle( String text ){
		JPanel panel = new JPanel( new GridBagLayout() );
		JTextArea area = new JTextArea();
		JButton button = new JButton( text );
		
		panel.add( new JScrollPane( area ), new GridBagConstraints( 0, 0, 1, 1, 
				100.0, 100.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
				new Insets( 10, 10, 10, 10 ), 0, 0 ));
		panel.add( button, new GridBagConstraints( 0, 1, 1, 1, 1.0, 1.0, 
				GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
				new Insets( 0, 10, 10, 10 ), 0, 0 ));
		
		return panel;
	}
}
 

Jürgen

Mitglied
Hi Beni,

super, vielen Dank! Alleine hätte ich das nie hinbekommen!

Vielen Dank nochmals und Gruß,

Jürgen
 

L-ectron-X

Gesperrter Benutzer
Und noch 'ne Ergänzung:
Das Eurosymbol bekommst Du im Code mit einem Unicode hin. Dieser lautet: \u20AC
Den übergibst Du wie einen String.
Du kannst es aber auch mit mal mit der Tastenkombination [AltGr]+[e] versuchen.

@Beni: Deine Smiley-Bildchen finde ich immer wieder erquickend. :lol:
 

Jürgen

Mitglied
Hi,

danke für die Info(s)! Werde mir das mit den Tabellen mal ausprobieren - vom Grundprinzip ( zumindest aus HTML ) denke ich mal, daß es mir mehr liegt...

Danke nochmals für eure Antworten und Bemühungen,

Jürgen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R swt layouting problem AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben