JLayeredPane - Wie funktioniert das mit den Layern?

Status
Nicht offen für weitere Antworten.

shiny_hair

Mitglied
Hallo,

ich habe einige Fragen zum Umgang mit JLayeredPane, da ich absolut nicht klar komm damit.
Ich erkläre einfach mal grob meine Vorgehensweise, da es mir am Grundverständnis mangelt:
Vom aktuellen JApplet übergebe ich per getRootPane() das RootPane an meine Grafikklasse (myGrafik extends JFrame). Dort füge ich einen Container hinzu:
Code:
this.setRootPane(uebergebenesRootPaneVonJApplet);
this.getLayeredPane().setBounds(0, 0, 890, 490);
this.getLayeredPane().setLayer(mycontainer, 30000);
this.getLayeredPane().add(mycontainer, 30000);
(Kurios: Wenn this.getLayeredPane().setLayer(mycontainer, JLayeredPane.DEFAULT_LAYER) angebe, dann spuckt mir eclipse eine Fehlermeldung aus: the method setLayer(Component, int) in the type JLayeredPane is not applicable for the arguments (Container, int). Diese Fehlermeldung kommt aber nur bei Windows, nicht bei Linux.)

Dieser Container (mit GridBagLayout) ist meine Grundfläche, wo ich JPanel, JComboBox, JMenuBar und andere JKonsorten platziere. Später möchte ich darüber ein JPanel platzieren.

Um's nochmal in kurzen Worten zusammenzufassen: ich füge dem LayeredPane vom aktuellen RootPane einen Container mit den Komponenten hinzu.

Wenn ich nun starte, dann passiert nichts. Nur ein leeres, weißes Fenster, keine Fehlermeldung.

Müssen die einzelnen Komponenten (JPanel, JComboBox, JMenuBar, usw.) bei JLayeredPane extra berücksichtigt werden? Reicht es nicht, wenn das Grundobjekt (der Container) berücksichtigt wird?

Gruß
Michael
 

shiny_hair

Mitglied
Hier nun etwas Code:
Code:
public class Schaender extends JApplet {

	private static final long serialVersionUID = 1364602078344152051L;
	Grafik myGrafik;
	
	public void init () {

		setSize(890, 490); 

		try {
			myGrafik = new Grafik(this.getRootPane(), this.getCodeBase().toURI());
		} catch (URISyntaxException e) {
			e.printStackTrace();
		}
		myGrafik.startGrafik();
	}
}


class Grafik extends JFrame {
	
	private static final long serialVersionUID = 4435345634634276L;
	
	Ordner myOrdner;
	
	JLayeredPane mylayer = new JLayeredPane();
	Container mycontainer = new Container();
	Container mypop = new Container();
	
	GridBagLayout mylayout = new GridBagLayout();
	GridBagConstraints mycons = new GridBagConstraints();
	JMenuBar mybar = new JMenuBar();
	JMenu mymenu = new JMenu("Menue");
	JMenuItem mymenuitem = new JMenuItem("Ueber...");
	JPanel oben = new JPanel(); //fuer Bildvorschau
	JPanel wahl = new JPanel(); //ComboBox fuer Ordnerwahl
	JComboBox wahlbox = new JComboBox();
	JList mitte = new JList(); //fuer Bildliste
	JScrollPane mittescroll = new JScrollPane(mitte); //zum Scrollen der JList
	JButton unten = new JButton(); //vor-/zurueck-Buttons
	JPanel flaeche = new JPanel(); //Bildflaeche

	
	public Grafik(JRootPane appletroot, URI appletpfad) {
		this.setRootPane(appletroot);
	}
		
	public void startGrafik() {
		
		this.getRootPane().getLayeredPane().setBounds(0, 0, 890, 490);
		this.getRootPane().getLayeredPane().setLayer(mycontainer, 30000);
		this.getRootPane().getLayeredPane().add(mycontainer, 30000);

		mymenu.add(mymenuitem);
		mybar.add(mymenu);

		mycontainer.setLayout(mylayout); 
		
		mittescroll.setPreferredSize(new Dimension(30, 250));
		
		oben.setBackground(Color.YELLOW);
		wahl.setBackground(Color.CYAN);
		mitte.setBackground(Color.GREEN);
		unten.setBackground(Color.BLUE);
		flaeche.setBackground(Color.RED);
		wahl.add(wahlbox);
		
		gridbagHelfer(0, 0, 1, 1, 0.1, 0.01, mybar);
		gridbagHelfer(0, 1, 1, 1, 0.1, 0.5, oben);
		gridbagHelfer(0, 2, 1, 1, 0.1, 0.01, wahl);
		gridbagHelfer(0, 3, 1, 1, 0.1, 0.39, mittescroll);
		gridbagHelfer(0, 4, 1, 1, 0.1, 0.1, unten);
		gridbagHelfer(1, 0, 1, 5, 0.9, 0, flaeche);
		
		this.validateTree();
	}
	
	
	//Hilfsmethode fuer GridBagLayout
	private void gridbagHelfer(int _gridx, int _gridy, int _gridwidth, int _gridheight, double _weightx, double _weighty, JComponent komponente) {
		mycons.gridx = _gridx; //welche Stelle beginnt Zelle (x-Achse)
		mycons.gridy = _gridy; //welche Stelle beginnt Zelle (y-Achse)
		mycons.gridwidth = _gridwidth; //ueber wieviel Felder ragt die Zelle (x-Achse)
		mycons.gridheight = _gridheight; //ueber wieviel Felder ragt die Zelle (y-Achse)
		mycons.weightx = _weightx; //die Gewichtung relativ zu den anderen Zellen (x-Achse)
		mycons.weighty = _weighty; //die Gewichtung relativ zu den anderen Zellen (y-Achse)
		mycons.fill = GridBagConstraints.BOTH; //der restliche Platz wird mit Komponente gefuellt	
		mylayout.setConstraints(komponente, mycons);	
		mycontainer.add(komponente);
		
	}
	
	
	//Extra-Klasse fuer JPanel wegen paintComponent
	public class myJPanel extends JPanel {
		
		private static final long serialVersionUID = 3539041744270282816L;
		BufferedImage puffbild;
		
		public myJPanel(BufferedImage bufferimage) {
			puffbild = bufferimage;
		}
		
		public void paintComponent (Graphics g) {
			super.paintComponent(g);
			Graphics2D g2d = (Graphics2D) g;
			g2d.drawImage(puffbild, null, 0, 0);
		}	
	}
	
}
Wenn ich das starte, dann passiert nichts. Nur das Appletfenster erscheint mit weißem Inhalt. Keine Fehlermeldung.
Was mach ich falsch?

Gruß
Michael
 

shiny_hair

Mitglied
Hab's jetzt hinbekommen (Teilausschnitt):

Code:
class Grafik extends JFrame {
	
	Container mycontainer = new Container();
	BilderBuffern album = new BilderBuffern();
	myLayer myframeinhalt = new myLayer();
	
	public Grafik(Container appletcontentpane) {
		mycontainer = appletcontentpane;
	}
		
	public void startGrafik() {
		mycontainer.add(myframeinhalt);
	}
	
	class myLayer extends JLayeredPane {
		
		private static final long serialVersionUID = 1107922248478421835L;
		GridBagLayout mylayout = new GridBagLayout();
		GridBagConstraints mycons = new GridBagConstraints();
		Ordner myOrdner;
		JMenuBar mybar = new JMenuBar();
		JMenu mymenu = new JMenu("Menü");
		JMenuItem mymenuitem = new JMenuItem("About");
		JPanel oben = new JPanel(); //für Bildvorschau
		JPanel wahl = new JPanel(); //ComboBox für Ordnerwahl
		JComboBox wahlbox = new JComboBox();
		JList mitte = new JList(); //für Bildliste
		JScrollPane mittescroll = new JScrollPane(mitte); //zum Scrollen der JList
		JButton unten = new JButton(); //vor-/zurueck-Buttons
		JPanel flaeche = new JPanel(); //Bildflaeche
		
		
		public myLayer() {
			this.setLayout(new GridBagLayout());
			myOrdner = new Ordner(); //Liste der verfügbaren Bilder holen
			basisFlaeche();
		}
		
		public void basisFlaeche() {
		
		
			mymenu.add(mymenuitem);
			mybar.add(mymenu);

			mittescroll.setPreferredSize(new Dimension(30, 250));
						
			oben.setBackground(Color.YELLOW);
			wahl.setBackground(Color.CYAN);
			mitte.setBackground(Color.GREEN);
			unten.setBackground(Color.BLUE);
			flaeche.setBackground(Color.RED);
			
			gridbagHelfer(0, 0, 1, 1, 0.1, 0.01, 0, mybar, 1);
			gridbagHelfer(0, 1, 1, 1, 0.1, 0.5, 0, oben, 1);
			gridbagHelfer(0, 2, 1, 1, 0.1, 0.01, 0, wahl, 1);
			gridbagHelfer(0, 3, 1, 1, 0.1, 0.39, 0, mittescroll, 1);
			gridbagHelfer(0, 4, 1, 1, 0.1, 0.1, 0, unten, 1);
			gridbagHelfer(1, 0, 1, 5, 0.9, 1, 0, flaeche, 1);		
			wahl.add(wahlbox);
		}
		
		BorderLayout myborder = new BorderLayout(10, 10);
		myPopupJPanel testflaeche = new myPopupJPanel();
		JButton popupbutton = new JButton("Schließen");
		
		public void popUp() {
			testflaeche.setOpaque(false);
			testflaeche.setLayout(myborder);
			gridbagHelfer(0, 0, 2, 5, 1, 1, 20, testflaeche, 400);
			this.setLayer(testflaeche, new Integer(400));			
			this.validate();
		}
		
		//Hilfsmethode für GridBagLayout
		private void gridbagHelfer(int _gridx, int _gridy, int _gridwidth, int _gridheight, double _weightx, double _weighty, int _insets, JComponent komponente, int layerwert) {
			mycons.gridx = _gridx; //welche Stelle beginnt Zelle (x-Achse)
			mycons.gridy = _gridy; //welche Stelle beginnt Zelle (y-Achse)
			mycons.gridwidth = _gridwidth; //ueber wieviel Felder ragt die Zelle (x-Achse)
			mycons.gridheight = _gridheight; //ueber wieviel Felder ragt die Zelle (y-Achse)
			mycons.weightx = _weightx; //die Gewichtung relativ zu den anderen Zellen (x-Achse)
			mycons.weighty = _weighty; //die Gewichtung relativ zu den anderen Zellen (y-Achse)
			mycons.insets = new Insets(_insets, _insets, _insets, _insets);
			mycons.fill = GridBagConstraints.BOTH; //der restliche Platz wird mit Komponente gefuellt	
			
			this.addImpl(komponente, mycons, layerwert); //addImpl notwendig wegen Constraints
			this.setLayer(komponente, new Integer(layerwert));
		}	
		

		//Extra-Klasse für JPanel wegen paintComponent
		public class myJPanel extends JPanel {
			
			private static final long serialVersionUID = 3539041744270282816L;
			BufferedImage puffbild;
			BufferedImageOp myop;
			
			public myJPanel(BufferedImage bufferimage) {
				puffbild = bufferimage;
				this.setBounds(0, 0, puffbild.getWidth(),puffbild.getHeight()); //loeschen
			}
			
			public void paintComponent (Graphics g) {
				super.paintComponent(g);
				Graphics2D g2d = (Graphics2D) g;
				g2d.setClip(0 ,0, puffbild.getWidth(), puffbild.getHeight());
				//g2d.transform(new AffineTransform(40d, 0, 0,40d,0,0));
				
				g2d.drawImage(puffbild, null, 0, 0);
			}	
		}
		
		//Extra-Klasse (halbtransparent) für Popup-JPanel wegen paintComponent
		public class myPopupJPanel extends JPanel {
			
			private static final long serialVersionUID = 8782249918175277703L;
		
			public myPopupJPanel() {
		
			}
			
			public void paintComponent (Graphics g) {
				super.paintComponent(g);
				Graphics2D g2d = (Graphics2D) g;
				g2d.setColor(new Color(3, 65, 27, 210));
				g2d.fill3DRect(0, 0, 850, 450, true);
			}	
		}
				
	}		
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Swing JLayeredPane Anordnung funktioniert nicht AWT, Swing, JavaFX & SWT 2
G JLayeredPane moveToFront funktioniert nicht AWT, Swing, JavaFX & SWT 15
B viele JPanels auf JLayeredPane -> to SVG? AWT, Swing, JavaFX & SWT 15
S Swing JLayeredPane "Phänomen"? AWT, Swing, JavaFX & SWT 7
E Swing JPanel in JLayeredPane animieren AWT, Swing, JavaFX & SWT 7
R Swing Animation mit JLayeredPane? AWT, Swing, JavaFX & SWT 8
T JLayeredPane in JScrollBox AWT, Swing, JavaFX & SWT 2
GUI-Programmer Swing Problem mit JLayeredPane AWT, Swing, JavaFX & SWT 2
M JLayeredPane mit JPanel im Vordergrund, Hintergrundelemente sperren AWT, Swing, JavaFX & SWT 7
G JPanel in JLayeredPane AWT, Swing, JavaFX & SWT 8
D Probleme mit MouseWheelListener und JLayeredPane in Applet AWT, Swing, JavaFX & SWT 2
G Swing JLayeredPane Schach AWT, Swing, JavaFX & SWT 7
K JLayeredPane Elemente auf gleicher Position AWT, Swing, JavaFX & SWT 7
R JLayeredPane - JPanel mit variabler Form AWT, Swing, JavaFX & SWT 4
J Layer von JLayeredPane unsichtbar durchsichtig in den Hintergrund AWT, Swing, JavaFX & SWT 5
R JLayeredPane - Drag&Drop - mouseDragged AWT, Swing, JavaFX & SWT 6
J SWING Fenster mit mehreren JPanels (dank JLayeredPane) AWT, Swing, JavaFX & SWT 19
R Swing JLayeredPane - Wie JScrollPane einbauen? AWT, Swing, JavaFX & SWT 17
R Swing JLayeredPane - Drag&Drop Positionen vertauschen AWT, Swing, JavaFX & SWT 3
H Button auf Bild/ JLayeredPane in Jpanel AWT, Swing, JavaFX & SWT 15
D jLayeredPane Ebenen mit dynamischer Größe AWT, Swing, JavaFX & SWT 2
B Ärger mit JLayeredPane :-( AWT, Swing, JavaFX & SWT 5
S JLayeredPane AWT, Swing, JavaFX & SWT 16
M JLayeredPane : Applet - Application AWT, Swing, JavaFX & SWT 4
V JLayeredPane wird nur 1x bezeichnet AWT, Swing, JavaFX & SWT 12
T JLayeredPane Problem - AWT und SWING Komponente AWT, Swing, JavaFX & SWT 6
M Scrollbare JLayeredPane AWT, Swing, JavaFX & SWT 2
Juelin if Abfrage funktioniert nicht richtig AWT, Swing, JavaFX & SWT 10
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
P AWT Programm funktioniert nicht richtig AWT, Swing, JavaFX & SWT 35
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
M Scrollbar funktioniert nicht AWT, Swing, JavaFX & SWT 10
D Repaint Funktioniert nicht AWT, Swing, JavaFX & SWT 2
W JEditorPane textausrichtung nach settext funktioniert nicht mehr AWT, Swing, JavaFX & SWT 11
H Swing Anpassen der Textgröße im JLabel funktioniert nur bedingt AWT, Swing, JavaFX & SWT 7
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Swing Tooltip-Delay funktioniert nicht immer. AWT, Swing, JavaFX & SWT 1
B Output GUI funktioniert nur beim ersten Mal richtig. AWT, Swing, JavaFX & SWT 4
sserio Wie funktioniert ein Controller bei JavaFx? AWT, Swing, JavaFX & SWT 1
U Wie funktioniert das rotieren unter 2dGraphics, also wie stelle ich z. B. 90° ein? AWT, Swing, JavaFX & SWT 1
U Wie funktioniert Polygon? AWT, Swing, JavaFX & SWT 1
U Wie genau funktioniert 2dgraphics, in diesem Bezug? AWT, Swing, JavaFX & SWT 4
S ChoiceBox aus ArrayList per setValue() mit Wert belegen funktioniert nicht. AWT, Swing, JavaFX & SWT 0
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
H BufferedImage zurücksetzen funktioniert nicht AWT, Swing, JavaFX & SWT 12
H RPG Programmieren, label.setLocation funktioniert nicht AWT, Swing, JavaFX & SWT 7
EinNickname9 Einfacher parser funktioniert nicht AWT, Swing, JavaFX & SWT 2
F Swing Adapt Row Height funktioniert nicht richtig :( AWT, Swing, JavaFX & SWT 7
P Swing jxmapviewer hinzufügen/nutzen funktioniert nicht AWT, Swing, JavaFX & SWT 7
CptK Wie funktioniert contains() für Path2D.Double AWT, Swing, JavaFX & SWT 10
J Anbindung Textfeldklasse an Table funktioniert nicht AWT, Swing, JavaFX & SWT 3
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
B Stylen eines JTextPane funktioniert nicht AWT, Swing, JavaFX & SWT 1
VPChief Swing Eclipse: Nach Exportieren, Button funktioniert nicht mehr AWT, Swing, JavaFX & SWT 26
H Bewegung funktioniert nicht AWT, Swing, JavaFX & SWT 3
N Pixelfarbe abgleichen funktioniert nicht AWT, Swing, JavaFX & SWT 5
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
steven789hjk543 Swing Weiß jemand, warum dieses Programm nicht funktioniert? AWT, Swing, JavaFX & SWT 7
M Swing setMaximumSize funktioniert nicht AWT, Swing, JavaFX & SWT 1
K JavaFX funktioniert nicht AWT, Swing, JavaFX & SWT 2
B AWT actionPerformed Method funktioniert nicht AWT, Swing, JavaFX & SWT 12
L JavaFX Drag and Drop funktioniert nicht AWT, Swing, JavaFX & SWT 3
M Swing Code funktioniert auf Windows aber nicht Linux... AWT, Swing, JavaFX & SWT 3
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
J JavaFX addListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
P CardLayout funktioniert fehlerhaft AWT, Swing, JavaFX & SWT 13
L WrapLayout funktioniert nicht AWT, Swing, JavaFX & SWT 1
kodela Accalerator für einige Menüoptionen funktioniert nicht mehr AWT, Swing, JavaFX & SWT 3
S JavaFX mit javac compilieren funktioniert nicht AWT, Swing, JavaFX & SWT 2
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
J AWT System Farben / java.awt.SystemColor funktioniert nicht AWT, Swing, JavaFX & SWT 4
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
K javafx app > "run in browser" funktioniert nicht AWT, Swing, JavaFX & SWT 3
N JavaFX GridPane Halignment funktioniert nicht AWT, Swing, JavaFX & SWT 1
it_is_all JLabel.setIcon - funktioniert nicht mehr AWT, Swing, JavaFX & SWT 2
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
Z BoxLayout funktioniert nicht und Buttongröße AWT, Swing, JavaFX & SWT 18
C Java Hintergrund funktioniert nicht AWT, Swing, JavaFX & SWT 9
J Swing Wie funktioniert dieser ChangePropertyListener??? AWT, Swing, JavaFX & SWT 0
GreenTeaYT Button funktioniert nicht für Ein-und Auszahlungen? AWT, Swing, JavaFX & SWT 8
C Keylistener funktioniert nicht AWT, Swing, JavaFX & SWT 1
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
M UIManager funktioniert nicht mit Farben AWT, Swing, JavaFX & SWT 9
M Swing UIManager funktioniert nicht mit Farben AWT, Swing, JavaFX & SWT 0
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
S JavaFX wie funktioniert CSS und javaFX AWT, Swing, JavaFX & SWT 19
S KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 2
J JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 5
M JavaFX Eventhandler Funktioniert nicht AWT, Swing, JavaFX & SWT 3
Sogomn JavaFX Injektion funktioniert nicht AWT, Swing, JavaFX & SWT 4
Blender3D Swing KeyBoardListener funktioniert nicht unter UBUNTU AWT, Swing, JavaFX & SWT 7
J JavaFX Button funktioniert(nicht) AWT, Swing, JavaFX & SWT 3
J DefaultCloseOperation funktioniert nicht AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben