Panels, grafische Oberflächen

Hi Leute,
ich habe mal eine Frage zu Einteilung eines Fensters. Ich möchte ein Fenster erstellen, dass aus 2 Panels besteht. Dies in der Form eine Zeile, zwei Spalten. Das linke Panel soll 4 Zeilen und eine Spalte haben, das rechte wird ein Button.

Java:
class guiUhrzeitRechner extends Frame{	
  
  private Panel[] p = new Panel[2];
  private Button[]button = new Button[1];
  private TextField ankunft = new TextField(10);
  private TextField verspaetung = new TextField(10);
  private TextField uhrzeit = new TextField(10);
  
	public guiUhrzeitRechner() {
	
		setLayout(new GridLayout(1,2));
		p[0] = new Panel (new GridLayout(4,1));
		p[1] = new Panel (new GridLayout(1,1));
		
		p[0].add(new Label("Uhrzeit"));
		p[0].add(ankunft);
		p[0].add(new Label("Verspaetung"));
		p[0].add(verspaetung);
...

So weit so gut. Wie könnte ich jetzt eine Zeile des linken Panels weiter unterteilen? Angenommen ich würde in der ersten Zeile noch einmal 2 Spalten haben wollen. Ist p[0] an der zweiten Stelle wieder ein Panel, dass ich mit einem Layout versehen kann und beliebig gestalten kann?

Danke im Voraus,

grüße,

simon
 
Hmm vielleicht habe ich dich missverstanden:
Du kannst doch einfach weiter "Spalten erzeugen" indem du ein weiteres Panel mit einem GridLayout dort einfügst.
 
Hi,

du kannst dein Panel mit .setLayout(null) setzen, damit kannst du dann dein Panel frei setzen
dann kannst du deinem Panel eine size und eine location geben, dass zu deinem Panel.

Statt dein Panel nochmal zu unterteilen, würde ich dir empfehlen, einen JTable zu benutzen.

🙂
 
Ich habe jetzt mal in Zeile 16 folgendes ausprobiert:

Java:
 p[0] = new Panel (new GridLayout(1,2));

Allerdings setzt er dann das gesamte Panel[0] auf eine Zeile zwei Spalten. Wo ist jetzt der letzte Kniff, damit nur die 2. Zeile 2 Spalten bekommt?
 
Ich habe das ganze jetzt etwas anders strukturiert.Kann mir vielleicht jemand mit den compilierfehlern helfen Ich bekomme in Zeile 71 den Fehler: int cannot be dereferenced.
Außerdem erhalt ich für Zeile 99 sowie 106: cannot find symbol, method setText(int).

Ich finds einfach nicht raus.

Bin für jede Hilfe dankbar!

Java:
import java.awt.*;
import java.awt.event.*;

class guiUhrzeit {
	
public static void main(String[] args) {  
  guiUhrzeitRechner rechner  = new guiUhrzeitRechner();
  } // main
 
 } //gui Uhrzeit
	
  class guiUhrzeitRechner extends Frame{	
  
  private Panel[] p = new Panel[3];
  private Button[]button = new Button[1];
  private TextField uhrzeitMin = new TextField(10);
  private TextField uhrzeitStd = new TextField(10);
  private TextField verspaetung = new TextField(10);
 
  public guiUhrzeitRechner() {
	
		setLayout(new GridLayout(3,1));
		p[0] = new Panel (new GridLayout(1,3));
		p[1] = new Panel (new GridLayout(1,2));
		p[2] = new Panel (new GridLayout(1,2));
		
		p[0].add(new Label("Uhrzeit(l-std,r-min) :"));
		p[0].add(uhrzeitMin);
		p[0].add(uhrzeitStd);
		
		p[1].add(new Label("Verspaetung in Min:"));
		p[1].add(verspaetung);
		
		
		
		button[0] = new Button ("berechnen");
		
		button[0].addActionListener(new Berechnen());
		
		p[2].add(button[0]);
	
	for(int i=0;i<3;i++) {
		add(p[i]);
	}
	
		addWindowListener(new WindowAdapter() {  
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	
	setTitle("Verspätung berechnen");
    setSize(600,300);
    setVisible(true); 
	
	}//gutUhrzeit()
	
	class Berechnen implements ActionListener {
		public void actionPerformed(ActionEvent e) {
		
		int stunden=0;
		int minuten=0;
		int verspaetung=0;
		int verspMin=0;
		int verspStd=0;
		int ankunftMin=0;
		int ankunftStd=0;
		
		stunden = Integer.parseInt(uhrzeitStd.getText());
		minuten = Integer.parseInt(uhrzeitMin.getText());
		verspaetung = Integer.parseInt(verspaetung.getText());
	
		if(verspaetung/60==0){
			verspMin = verspaetung;
		}
		
		
		else{
			verspStd = verspaetung/60;
			verspMin = verspaetung%60;
		}
		
		ankunftMin = minuten + verspMin;
		if(ankunftMin>=60){
			verspStd = verspStd+1;
			ankunftMin = ankunftMin % 60;
		}
		
		ankunftStd = stunden + verspStd;
		if(ankunftStd >= 24){
			ankunftStd = ankunftStd - 24;
		}
		System.out.println("\n"+ankunftStd);
		
		if(ankunftStd<10) {
			uhrzeitStd.setText("0"+ankunftStd);
		}
		else {
			uhrzeitStd.setText(ankunftStd);
		}
			
		if(ankunftMin<10) {
			uhrzeitStd.setText("0" + ankunftMin);
		}
		else {
			uhrzeitStd.setText(ankunftMin);
		}
			
			
		
			
	
		
			
	
		}//action

	}//Berechnen
	
}//guiUhrzeitRechner
 
Zuletzt bearbeitet:

Zurück
Oben