Checkbox anzeigen

HeinerPyt

Erfahrenes Mitglied
Ich barauch mal wieder Hilfe.

Ich will auf einem panel mehrere Checkboxen anzeigen.

Code:
public void init_window() 
		  { 
			   JFrame win = new Keplerbahn(1280,1024);
				
			    win.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
			    win.setTitle("Berechnet die Keplerbahnen");
	
			    
			    Panel panel1 = new Panel();
			    panel1.setSize(1000,1024);
			    panel1.setBackground(Color.BLACK); 

			    Panel panel2 = new Panel();
			    panel2.setSize(200,600);
			    panel2.setBackground(Color.YELLOW);

			    Checkbox cb1 = new Checkbox("Merkur");
			    Checkbox cb2 = new Checkbox("Venus");
			    panel2.setLayout(new GridLayout(4,1));
			    panel2.add(cb1);
			    panel2.add(cb2);

			    win.add(panel1);
			    win.add(panel2);
//			    win.pack();
			    win.setVisible( true ); 
			    
			    
		
		  }

Leider ist beim Ausführen des Programms nichts zu sehen.

Woran kann das liegen?

Danke.
 
Ähm... Leute, entscheidet euch mal, ob ihr Swing oder AWT benutzen wollt, mischen ist nicht sehr empfehlenswert, weil die beiden Toolkits ganz unterschiedlich arbeiten.

Zum Problem:
Du willst in ein JFrame etwas hinzufügen, rufst aber nur die add-Methode auf. Prinzipiell richtig gedacht, funktioniert aber nur im Falle von Frame. Beim JFrame müsste das so aussehen:
Java:
win.getContentPane().add(panel1);
win.getContentPane().add(panel2);
Das würde aber nur dazu führen, dass die beiden Panels im Center-Bereich liegen würden, da JFrame standardmäßig das BorderLayout verwendet und du keine Richtung angibst. Also entweder eine Richtung beim Hinzufügen angeben oder einen anderen LayoutManager verwenden.
 
Zuletzt bearbeitet:
Eigentlisch schon, aber habs mal selbst gemacht und hier der Code:
Java:
package de.tutorials.heinerpyt.checkboxen;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CheckboxenTest {
	public static void main(String[] args) {
		JFrame win = new JFrame();

		win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		win.setTitle("Berechnet die Keplerbahnen");

		JPanel panel1 = new JPanel();
		panel1.setBackground(Color.BLACK);

		JPanel panel2 = new JPanel();
		panel2.setBackground(Color.YELLOW);

		JCheckBox cb1 = new JCheckBox("Merkur");
		JCheckBox cb2 = new JCheckBox("Venus");
		panel2.setLayout(new GridLayout(4, 1));
		panel2.add(cb1);
		panel2.add(cb2);

		win.getContentPane().setLayout(new GridLayout(2, 1));
		win.getContentPane().add(panel1);
		win.getContentPane().add(panel2);

		win.setSize(500, 500);
		win.setLocationRelativeTo(null);
		win.setVisible(true);
	}
}
Und nen Screenshot als Beweis.
 

Anhänge

  • screen.png
    screen.png
    7,8 KB · Aufrufe: 12
Zuletzt bearbeitet:
Hi!
[Sarkasmus an]Erstmal danke Heiner, dass du in deinem anderen darüber nicht darüber berichtet hast, ob nun dein Problem gelöst würde. Interessiert ja auch keinen[/Sarkasmus aus]
Hast du denn nun auch Richtungsangaben wie von Akeshihiro gesagt hinzugefügt?
Code:
win.add(panel1,BorderLayout.CENTER);
win.add(panel2,BorderLayout.NORTH);

Übrigens, (seit Java 1.5?) ist ein Aufruf wie
Code:
win.getContentPane.add(panel1,BorderLayout.CENTER);
nicht mehr nötig, da alles was dem JFrame hinzugefügt wird, automatisch an das ContentPane weitergereicht wird.
Code:
win.add(panel1,BorderLayout.CENTER);
reicht also in diesem Falle...

*grüssle*
 
Zurück