JFrame über mehrere JPanel und Listener

elischa

Mitglied
Hallo Leute,
ich versuche die ganze Zeit zwei Minimalbeispiele einer GUI hinzukriegen, aber leider läuft im 2. Beispiel die ganze Zeit was schief. Beim ersten Bsp. habe ich versucht möglichst modular aufzubauen, und beim zweiten Bsp möglichst alles in eine Datei zu packen:

Bsp 1:
---------
Datei 1: C01JFrame.java

Java:
import java.awt.Color;
import javax.swing.JFrame;


public class C01JFrame extends JFrame {
       
    private static final long serialVersionUID = 1L;
    
    private C01JPanel myJPanel01;
    
    public C01JFrame() {
        
        super("FrameFenster");
        
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        this.setSize(800,600);
        this.setBackground(Color.red);
        
        
        myJPanel01 = new C01JPanel();
        
        myJPanel01.setSize(300,200);
        myJPanel01.setBackground(Color.green);
        myJPanel01.setVisible(true);
        
        
        this.addKeyListener(myJPanel01);
        this.add(myJPanel01);
        
    }
}

Datei 2: C01JPanel.java

Java:
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;

public class C01JPanel extends JPanel implements KeyListener {
    
    private static final long serialVersionUID = 1L;
    private String a = "bla blub";
    
    public C01JPanel() {
        this.addKeyListener(this);
    }
    
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode()==KeyEvent.VK_ESCAPE) {
            System.out.println("Hello");
            
            repaint();         
        }
    }
    
    public void keyTyped(KeyEvent ke) { }
    
    public void keyReleased(KeyEvent ke) { }
    
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.fillOval(10,10,10,10);
        g.drawString(a, 200, 300);
    }

}

Datei 3: C01Tester.java

Java:
public class C01Tester {

    public static void main(String[] args) {
        
        new C01JFrame();

    }

}

Warum resized oder packed das zweite grüne Panel vollständig über das Rote. Ich dachte eher daran, dass das rote Panel doch noch sichtbar sein würde. Und warum funzt es nicht wenn ich überall auf das JFrame mit getContentPane() zugreife anstatt mit this ?

Beispiel 2:
---------------
Datei C02JFrame.java

Java:
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class C02JFrame extends JFrame {
    
    private static final long serialVersionUID = 1L;
    String a= "bla blub";
    Container con;
    // custom jpanels declarations & instances used in outer JFrame 
    CinnerJPanel myJPanel01;
    // constructor of outer JFrame class
    public C02JFrame() {
        
        setSize(700,450);
        setBackground(Color.red);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        myJPanel01 = new CinnerJPanel();
        
        addKeyListener(myJPanel01);
        add(myJPanel01);
        
        con = this.getContentPane();
    }
    
    // definition of custom JPanel inner class
    class CinnerJPanel extends JPanel implements KeyListener {
        
        // var & declarations inner class
        private static final long serialVersionUID = 1L;
        
        // constructor inner class
        CinnerJPanel() {
            this.setSize(200,200);
            this.setBackground(Color.green);
            this.setVisible(true);
            con.addKeyListener(this);
            //con.addKeyListener(this);
        }
    
        // Listener inner class override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode()==KeyEvent.VK_ESCAPE) {
                System.out.println("hoi !");
                repaint();
            }
        }
        public void keyReleased(KeyEvent arg0) { }

        public void keyTyped(KeyEvent arg0) { }
        
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.fillRect(400, 500, 60, 100);
            g.drawString("huhu !", 50, 80);
        }
        
    } // end of inner class
    
            
    // methods & flow of outer JFrame class
    // ...
    
    
    // runner
    public static void main (String[] args) {
        new Mini_JFrame();
    }

}

Krieg' im unteren Teil, gar keine Panels mehr hin. Jemand ne Idee was ich da machen könnte ?
Und noch was zu den Listener, s'is doch so, dass
ereignissAuslöser.addListener(empfänger) den Listener beim Auslöser registriert und nach oben weiterreicht oder ?
müsste ich dann bei einem Textfeld,
textfeld.addListener(myJPanel) und dann myJPanel.addListener(myJFrame) und dann myJFrame.addListener(myJFrame) implementieren ? Hab hier vorwärts, rückwärts und seitwärts alles durch, raff's irgendwie nicht, würde mich freuen, wenn jemand ein paar Tips hätte :)

Viele Grüß Elischa
 

elischa

Mitglied
noch ne kurze Anmerkung
also ich meine nur ein Panel und ein JFrame, mehrere Panels wollt ich später mal nebeneinader probieren, auch wenn's jetzt nicht soo viel sinn macht und man ja eigentlich nur ein Panel immer austauscht, dass auf dem Frame liegt
 

elischa

Mitglied
im zweiten Beispiel sind mir paar Fehler unterlaufen:
...
Java:
Container con = new Container();
...
...
public static void main (String[] args) {
new C02JFrame();
...

Jedes mal krieg' ich mit den Layern was anderes, hmm, wenn ich ein noch einfacheres Beispiel nehme:
Datei: FrameMitWindowListener.java

Java:
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JFrame;

public class FrameMitWindowListener extends JFrame implements WindowListener {
    
    private static final long serialVersionUID = 1L;
    private String myString = "bla";
    
    public FrameMitWindowListener() {
        super ("Fenster");
        this.setSize(800,600);
        this.setBackground(java.awt.Color.blue);
        this.setVisible(true);
        this.addWindowListener(this);
    }
    
    public void windowClosing(WindowEvent we) {
        System.out.println(myString+System.currentTimeMillis());
        System.exit(0);
    }

    public void windowActivated(WindowEvent arg0) { }

    public void windowClosed(WindowEvent arg0) { }

    public void windowDeactivated(WindowEvent arg0) { }

    public void windowDeiconified(WindowEvent arg0) { }

    public void windowIconified(WindowEvent arg0) { }

    public void windowOpened(WindowEvent arg0) { }
    
    public static void main (String[] args) {
        new FrameMitWindowListener();
        
    }

}

krieg ich kein blau rein, warum ?
 

Newcomer2

Aktives Mitglied
Hallo elischa,

in deinem Konstruktor kannst du erstmal das
Code:
this.
vor den Eigenschaften weglassen.

Was die Listener angeht:
Du willst nen Panel mit Listener? Dann z.B.:
Java:
JPanel panel = new JPanel();
panel.addListener(this);  //z.B. MouseListener
/* musst dann den MouseListener implementieren lassen 
* dadurch wirste angewiesen, weitere Methoden hinzuzufügen 
*/

Nen Panel kannste aber nicht alleine lassen, entweder muss nen JFrame oder nen JWindow da sein, auf dem du das Panel legen willst:

Beispiel: JFrame mit JPanel in rot.

Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

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

class xyz extends JFrame implements MouseListener{

public static void main(String args[])
{
xyz frame = new xyz();
frame.setBackground(Color.blue);
}

public xyz() {
super("Fenster");
setVisible(true);
setSize(800,600);
setLayout(null); // damit du Hintergund und Panel siehst, brauchste nen Layout
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setSize(200,200);
panel.setVisible(true);
panel.setLocation(50,50);
panel.addMouseListener(this);
panel.setBackground(Color.red);
add(panel, BorderLayout.WEST);
}


public void mouseClicked(MouseEvent arg0) {}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {}
public void mouseReleased(MouseEvent arg0) {};
//...

}

is nurn beispiel :)
 

elischa

Mitglied
thx für die Tips, hab mal mit dem MouseListener und nochma ohne Layout auf die schnelle probiert, denk' ich nehm' mal dann doch nen Layout, sonst komm ich da nich gscheit auf'm Panel oder JFrame. Bin noch nicht ganz durchgestiegen, nur kurz dran schrauben können...die Tage mal nochmal üben... poste dann nochma wenn ich alles iwie in nen Beispiel drinne hab
Java:
//package testProject01;

import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class FensterRunner extends JFrame implements MouseListener {
    
    JPanel myJPanel;
    
    public FensterRunner() {
        
        super("Frame");
        setSize(800,600); //@jframe
        setVisible(true); //@jframe
        
        myJPanel = new JPanel();
        myJPanel.setSize(400,300);
        myJPanel.setBackground(Color.DARK_GRAY);
        
        //@jframe
        //auslöser              empfänger
       // myJPanel.addMouseListener(this); //@jframe
        
//jframe                jframe
        addMouseListener(this); //@jframe
        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //@jframe
        
        add(myJPanel); //@jframe
            
    }
    
    public void mouseClicked(MouseEvent me) {
       System.out.println(me.getX());
    }
    public void mouseEntered(MouseEvent arg0) {}
    public void mouseExited(MouseEvent arg0) {}
    public void mousePressed(MouseEvent arg0) {}
    public void mouseReleased(MouseEvent arg0) {    
    }
    
    public static void main (String[] args) {
        new FensterRunner();
    }
}
 

Newcomer2

Aktives Mitglied
Mal so noch kurz nen Hinweis:

Das sogenannte "Null"-Layout (was ich verwendet hab im Beispiel) is eig. totaler Mist :)
Verglichen mit den anderen Layout-Typen brauchste eine unmenge an Quellcode-Zeilen, da du für jedes Objekt die Größe und Position festlegen musst. Weiterhin haste hier keine automatische Größenaktualisierung, wenn du den Frame vergrößerst oder verkleinerst. Hier sind dann die anderen Layouts deutlich vorn.

Wenn Du aber nur 1 Panel in einem Frame haben willst und das kleiner als der Frame sein soll (eben kleines Panel irgendwo im Frame), dann kann man u.U. das "Null"-Layout nehmen.

Layout-Typen:
"Null"-Layout
Java:
setLayout(null);
Objekt.setSize(b,h);
Objekt.setLocation(x,y);
//oder um beides zu kombinieren: Objekt.setBounds(x,y,b,h);
add(Objekt);

FlowLayout:
Ordnet alle Objekte nebeneinander (im Frame oder Panel) an. Bei nur einem Objekt wird das Komplette Panel oder Frame ausgefüllt, ohne Rand. Bei mehreren Objekten haste zwischen den Objekten und drumherum gleichgroße Lücken.
Java:
setLayout(new FlowLayout());
add(Objekt);

BorderLayout:
Unterteilung des Frames/Panels in 5 Bereiche (Nord, Süd, Ost, West, Zentrum).
Hier kannste mit Hilfe der Himmelsrichtungen auch nur 1 Objekt einsetzen, und siehst das dahinterligende Trotzdem.
Java:
setLayout(new BorderLayout());
add(Objekt,BorderLayout.SOUTH);

GridLayout:
Kannst im Layout direkt angeben, wie viele Objekte in Reihe und Spalte angeordnet sein sollen, außerdem gibt es noch die Möglichkeit anzugeben, ob und wie groß die Lücken zwischen den einzelnen Objekten sein sollen. Selbst bei einem Objekt kannste mehrere angeben, der verfügbare Platz wird entsprechend so eingeteilt, dass genügend Objekte den gleichen Bereich einnehmen können, wie Du angegeben hast.
Java:
setLayout(new GridLayout(s,z)); //ohne Lücken
setLayout(new GridLayout(s,z,h,b)); //mit Lücken zwischen den Objekten
add(Objekt);

GridBagLayout:
ähnlich wie GridLayout. Hier kannste das Frame/Panel in Bereiche einordnen und dann für deine Objekte festlegen, wie viele Bereiche es erhalten kann. Außerdem ist noch Möglichkeit geboten, für jedes Objekt einen Rand selbst definierter Größe einzubauen, ...


Hoffe, das hilft dir ein wenig bei der Wahl des richtigen Layouts :)
 

Newcomer2

Aktives Mitglied
Java:
/*
 * Mal ein Beispiel, wie die einzelnen Layout-Manager arbeiten und wie die Anordnung der Objekte 
 * im einzelnen Manager aussehen könnte. Als Beispiel sind hier nur funktionslose Buttons im zweiten
 * Frame "Layout-Ansicht" verwendet worden.
 */ 

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;


public class Layouts extends JFrame implements ActionListener{

	static JFrame frame2; 
	static String[] str = {
			"null",
			"FlowLayout()",
			"BorderLayout()",
			"GridLayout(3,2)",
			"GridLayout(3,2,10,10)"};
	
	List<JButton> buttons = new ArrayList<JButton>();
	static List<JButton> buttons2 = new ArrayList<JButton>();
	
	public static void main(String[] args) {
		new Layouts(); 
		frame2 = new JFrame("Layout-Ansicht");
		frame2.setVisible(true);
		frame2.setLocationRelativeTo(null);
		frame2.setLayout(new FlowLayout());
		for(int i=0;i<5;i++) {
			JButton button =new JButton("Button0"+ (i+1));
			frame2.add(button); 
			buttons2.add(button); }
		frame2.pack();
		frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}

	
	public Layouts() {
		super("Layout-Typen");
		setLayout(new FlowLayout());
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//Folgende Schleife verkürzt Quelltext, wenn viele Objekte gleichen Typs erzeugt
		//werden soll
		for(int i=0;i<5;i++) {
			JButton button = new JButton();
			button.addActionListener(this);
			button.setText(str[i]);
			buttons.add(button);
			add(button); }
		
		pack(); }
	
	@Override
	public void actionPerformed(ActionEvent event) {
		String cmd = event.getActionCommand();
		/*
		 * Nachfolgende Schleife schaut, welcher Button der erstellten Buttonliste gedrückt wurde
		 */
		for(int i=0;i<buttons.size();i++){
			if(cmd.equals(buttons.get(i).getText())) {

				switch(i){
					case 0: {frame2.setLayout(null); 
					/*
					 * Willkürliche Angaben von x, y, breite und höhe möglich, aber viel Quellcode
					 * und keine automatische Anpassung
					 */
								buttons2.get(0).setBounds(  0,   0,  100, 20);
								buttons2.get(1).setBounds( 20,  30,  100, 20);
								buttons2.get(2).setBounds(100,  20,  100, 20);
								buttons2.get(3).setBounds( 10,  70,  100, 20);
								buttons2.get(4).setBounds(200, 150,  100, 20);
								frame2.add(buttons2.get(0));
								frame2.add(buttons2.get(1));
								frame2.add(buttons2.get(2));
								frame2.add(buttons2.get(3));
								frame2.add(buttons2.get(4));
								frame2.setSize(500,300); break;}
					case 1: {frame2.setLayout(new FlowLayout());			frame2.pack(); break;}
					/*
					 * Alles in einer Reihe, automatische Anpassung der Größe der der Objekte bei
					 *  Veränderung der Größe des Frames
					 */
					case 2: {frame2.setLayout(new BorderLayout());	
					/*
					 * Nach Bedarf in die Himmelsrichtungen einzuteilen
					 */
								frame2.add(buttons2.get(0),BorderLayout.WEST);
								frame2.add(buttons2.get(1),BorderLayout.EAST);
								frame2.add(buttons2.get(2),BorderLayout.NORTH);
								frame2.add(buttons2.get(3),BorderLayout.SOUTH);
								frame2.add(buttons2.get(4),BorderLayout.CENTER);
								frame2.pack(); break;}
					case 3: {frame2.setLayout(new GridLayout(3,2));			frame2.pack(); break;}
					case 4: {frame2.setLayout(new GridLayout(3,2,10,10));	frame2.pack(); break;}}}}}}
 

elischa

Mitglied
huhu, tytychen für die Beispiele :) bin die hier einbischen am nachcoden aber is immer noch recht tricky mit den Layouts irgendwie. Ich kriege beim Null-Layout 'ne Überlagerung, der base dark-gray JFrame Layer unten wird vollständig? vom Panel oben mit dem wheee Knopf überlagert, warum krieg ich da nen light-gray Layer rein obwohl der Layer mit dem Panel und Whee Knopf doch zurechtgeschnitten ist. Imho müsst ich doch bei dem folgenden Code grün auf dunkelgrau sehen oder ?
Code:
package mischmasch;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/*
 *  Null-Layout
 */

public class PanelOnFrame extends JFrame implements ActionListener {
    
    private static final long serialVersionUID = 1L;
    
    private String b01com = "b01com";
    private JPanel lilPanel;
    private JButton b01;
    
    public PanelOnFrame() {
        
        super("Framename");
        setLayout(null);  // 1 Panel on 1 Frame
        setSize(400,300); // JFrame
        setBackground(Color.DARK_GRAY);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        
        lilPanel = new JPanel();
        lilPanel.setSize(200,150); // JPanel
        lilPanel.setBackground (  new Color(123,212,32)  );
        lilPanel.setVisible(true);
        
        b01 = new JButton("whhheeeee :)");
        b01.setActionCommand(b01com);
        b01.addActionListener(this);    //  -> Listener horchen am b01 
                                        // und geben bei action das Ergebniss 
                                        // an den Empfänger JFrame zurück ?
        lilPanel.add(b01);
        add(lilPanel);
        
    } // constructor end
    
    private int git() { // returns a random red/green/blue code
        return (int)(Math.random()*255);
    }
    
    public void actionPerformed(ActionEvent ae) {
        if  ( ae.getActionCommand().equalsIgnoreCase("b01com") )  {
            lilPanel.setBackground(new Color(git(),git(),git()));
            System.out.println("Action detected !");
        }
    }
    
    public static void main(String[] args) {
        new PanelOnFrame();  // dunkelgrau, hellgrau grün ?      
    }

}

und dann habe ich noch beim FlowLayout folgendes Beispiel zusamm'getexted, da funzt eigentlich fast alles (momentan aber nur Ausgabe auf Konsole). Da hätt ich auch die Überlagerung von oben zum einen und das setSize auf die 3 Panels funzt einfach nicht, ka warum und das mittlere Panel liefert keinen gscheiten Namen bei Klick

Code:
package mischmasch;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;


public class FlowLayoutTryout extends JFrame implements MouseListener {
    
    private static final long serialVersionUID = 1L;
    
    private JPanel myJPanel01;
    private JPanel myJPanel02;
    private JPanel myJPanel03;
    
    private static String echo = "";
    private static int positionX = -1;
    private static int positionY = -1;
    
    public FlowLayoutTryout() {
        
        super("Duper");
        setLayout(new FlowLayout()); // flow layout on global JFrame
        setSize(400,400); // JFrame
        setBackground(Color.MAGENTA); //JFrame
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //JFrame
        setVisible(true); //JFrame
                
        myJPanel01 = new JPanel();  // implicit default flow layout on JPanel? (see code completition help)
        myJPanel01.setName("myJPanel01");
        myJPanel01.setSize(100,100);
        myJPanel01.setBackground(new Color(12,54,125));
        myJPanel01.addMouseListener(this); // listener l listening on myJPanel for events,
                                           // Ausloeser: myJPanel01 | Empfänger: ? | Trigger: Listener l (this) | Richtung: -->? 
        myJPanel01.setVisible(true);
        
        add(myJPanel01); // JFrame
        
        myJPanel02 = new JPanel();
        myJPanel01.setName("myJPanel02");
        myJPanel02.setSize(100,100);
        myJPanel02.setBackground(new Color(120,35,233));
        myJPanel02.addMouseListener(this);
        myJPanel02.setVisible(true);
        
        add(myJPanel02); // JFrame
        
        
        myJPanel03 = new JPanel();
        myJPanel03.setName("myJPanel03");
        myJPanel03.setSize(100,100);
        myJPanel03.setBackground(new Color(85,235,61));
        myJPanel03.addMouseListener(this);
        myJPanel03.setVisible(true);
        
        add(myJPanel03); // JFrame
        
    } // end of constructor
    
    public void mouseClicked(MouseEvent moe) {
        if (  moe.getSource().equals(myJPanel01)  ) {
            positionX = moe.getX();
            positionY = moe.getY();
            echo = startHandler(myJPanel01, positionX, positionY);
            System.out.println(echo);
        }
            
        if (  moe.getSource().equals(myJPanel02)  ) {
            positionX = moe.getX();
            positionY = moe.getY();
            echo = startHandler(myJPanel02, positionX, positionY);
            System.out.println(echo);
        }
        if (  moe.getSource().equals(myJPanel03)  ) {
            positionX = moe.getX();
            positionY = moe.getY();
            echo = startHandler(myJPanel03, positionX, positionY);
            System.out.println(echo);
        }
    }
    
    public void mouseEntered(MouseEvent arg0) {}
    public void mouseExited(MouseEvent arg0) {}
    public void mousePressed(MouseEvent arg0) {}
    public void mouseReleased(MouseEvent arg0) {}
    
    
    private String startHandler(JPanel panel, int x, int y) {
        return "Hey ! U are on Panel "+panel.getName()+"\n (x/y) = "+"("+x+"/"+y+")";     
    }
    
    public static void main(String[] args) {
        @SuppressWarnings("unused")
        FlowLayoutTryout myFLT01 = new FlowLayoutTryout();
    }
}

und dann eiere ich noch ein wenig mit den Listener rum.
Insgesamt klappt's aber schon ab und zu hier und da, müsst noch bisken üben aber geht auf jeden.
Wenn jemand iwo noch 'nen Tip hat immer her damit :)

Gruß elischa
 

elischa

Mitglied
hab noch ein wenig dran rumgefeilt, setSize geht wohl beim FlowLayout dann nicht mehr, weil automatisch 'nen pack gemacht wird und außer dem Panel kein quasi größeres Objekt enhalten ist. Mit 'nem Null-Layout geht's dann wieder =)
Und die Listener hab ich mir grad so zurechtgebogen xD panel ------> L = this = JFrame Die beim panel registriert sind aber im Jframe sind und nen Event empfangen. Hier nochma die Codeschnippsel, bleibt eigentlich nur noch die Überlagerung am Anfang.

Java:
package mischmasch;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class NullLayoutTryout extends JFrame implements MouseListener {
    
    private static final long serialVersionUID = 1L;
    
    private JPanel myJPanel01;
    private JPanel myJPanel02;
    private JPanel myJPanel03;
    
    private static String echo = "";
    private static int positionX = -1;
    private static int positionY = -1;
    
    public NullLayoutTryout() {
        
        super("Duper");
        setLayout(null); // flow layout on global JFrame
        
        setSize(400,400); // JFrame
        setBackground(Color.MAGENTA); //JFrame
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //JFrame
        setVisible(true); //JFrame
                
        myJPanel01 = new JPanel();  // implicit default flow layout on JPanel
        myJPanel01.setLayout(null); // ueberschreibe
        myJPanel01.setLocation(0,0);
        myJPanel01.setName("myJPanel01");
        myJPanel01.setSize(100,100);
        myJPanel01.setBackground(new Color(12,54,125));
        myJPanel01.addMouseListener(this); 
        myJPanel01.setVisible(true);
        
        add(myJPanel01); // JFrame
        
        myJPanel02 = new JPanel();
        myJPanel02.setLayout(null);
        myJPanel02.setLocation(100,0);
        myJPanel02.setName("myJPanel02");
        myJPanel02.setSize(100,100);
        myJPanel02.setBackground(new Color(120,35,233));
        myJPanel02.addMouseListener(this);
        myJPanel02.setVisible(true);
        
        add(myJPanel02); // JFrame
        
        
        myJPanel03 = new JPanel();
        myJPanel03.setLayout(null);
        myJPanel03.setLocation(200,0);
        myJPanel03.setName("myJPanel03");
        myJPanel03.setSize(100,100);
        myJPanel03.setBackground(new Color(85,235,61));
        myJPanel03.addMouseListener(this);
        myJPanel03.setVisible(true);
        
        add(myJPanel03); // JFrame
        
    } // end of constructor
    
    public void mouseClicked(MouseEvent moe) {
        if (  moe.getSource().equals(myJPanel01)  ) {
            positionX = moe.getX();
            positionY = moe.getY();
            echo = startHandler(myJPanel01, positionX, positionY);
            System.out.println(echo);
        }
            
        if (  moe.getSource().equals(myJPanel02)  ) {
            positionX = moe.getX();
            positionY = moe.getY();
            echo = startHandler(myJPanel02, positionX, positionY);
            System.out.println(echo);
        }
        if (  moe.getSource().equals(myJPanel03)  ) {
            positionX = moe.getX();
            positionY = moe.getY();
            echo = startHandler(myJPanel03, positionX, positionY);
            System.out.println(echo);
        }
    }
    
    public void mouseEntered(MouseEvent arg0) {}
    public void mouseExited(MouseEvent arg0) {}
    public void mousePressed(MouseEvent arg0) {}
    public void mouseReleased(MouseEvent arg0) {}
    
    
    private String startHandler(JPanel panel, int x, int y) {
        return "Hey ! U are on Panel "+panel.getName()+"\n (x/y) = "+"("+x+"/"+y+")";     
    }
    
    public static void main(String[] args) {
        @SuppressWarnings("unused")
        NullLayoutTryout myFLT01 = new NullLayoutTryout();
    }
}

Java:
package mischmasch;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;


public class FlowLayoutTryout extends JFrame implements MouseListener {
    
    private static final long serialVersionUID = 1L;
    
    private JPanel myJPanel01;
    private JPanel myJPanel02;
    private JPanel myJPanel03;
    
    private static String echo = "";
    private static int positionX = -1;
    private static int positionY = -1;
    
    private JButton myJButton01;
    
    public FlowLayoutTryout() {
        
        super("Duper");
        setLayout(new FlowLayout()); // flow layout on global JFrame
        setSize(400,400); // JFrame
        setBackground(Color.MAGENTA); //JFrame
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //JFrame
        setVisible(true); //JFrame
        
        myJPanel01 = new JPanel();
        //myJPanel01.setLayout(null); 
        myJPanel01.setName("myJPanel01");
        //myJPanel01.setSize(100,100); // no effect, implicit pack to inner object
        myJPanel01.setBackground(new Color(12,54,125));
        myJPanel01.addMouseListener(this); // listener l in(this) JFrame instance 
              // myJPanel01 -> l           // is receiving events from sender/Ausloeser myJPanel01 
        
        myJPanel01.setVisible(true);
        
        add(myJPanel01); // JFrame
        
        myJPanel02 = new JPanel();
        //myJPanel02.setLayout(null);
        myJPanel02.setName("myJPanel02");
        //myJPanel02.setSize(100,100);
        myJPanel02.setBackground(new Color(120,35,233));
        myJPanel02.addMouseListener(this);
        
        
        myJButton01 = new JButton("Play!");
        myJPanel02.add(myJButton01);        
        
        myJPanel02.setVisible(true);
        add(myJPanel02); // JFrame
        
        
        myJPanel03 = new JPanel();
        //myJPanel03.setLayout(null);
        myJPanel03.setName("myJPanel03");
        //myJPanel03.setSize(100,100);
        myJPanel03.setBackground(new Color(85,235,61));
        myJPanel03.addMouseListener(this);
        myJPanel03.setVisible(true);
        
        add(myJPanel03); // JFrame
        
        
        
    } // end of constructor
    
    public void mouseClicked(MouseEvent moe) {
        if (  moe.getSource().equals(myJPanel01)  ) {
            positionX = moe.getX();
            positionY = moe.getY();
            echo = startHandler(myJPanel01, positionX, positionY);
            System.out.println(echo);
        }
            
        if (  moe.getSource().equals(myJPanel02)  ) {
            positionX = moe.getX();
            positionY = moe.getY();
            echo = startHandler(myJPanel02, positionX, positionY);
            System.out.println(echo);
        }
        if (  moe.getSource().equals(myJPanel03)  ) {
            positionX = moe.getX();
            positionY = moe.getY();
            echo = startHandler(myJPanel03, positionX, positionY);
            System.out.println(echo);
        }
    }
    
    public void mouseEntered(MouseEvent arg0) {}
    public void mouseExited(MouseEvent arg0) {}
    public void mousePressed(MouseEvent arg0) {}
    public void mouseReleased(MouseEvent arg0) {}
    
    
    private String startHandler(JPanel panel, int x, int y) {
        return "Hey ! U are on Panel "+panel.getName()+"\n (x/y) = "+"("+x+"/"+y+")";     
    }
    
    public static void main(String[] args) {
        @SuppressWarnings("unused")
        FlowLayoutTryout myFLT01 = new FlowLayoutTryout();
    }
}
 

jgh

Top Contributor
...setSize geht wohl beim FlowLayout dann nicht mehr, weil automatisch 'nen pack gemacht wird
wahrscheinlich verstehe ich dich falsch, aber das Flowlayout verwendet die PreferredSize:
Java:
 myJPanel01.setPreferredSize(new Dimension(100,100)); //
 

elischa

Mitglied
jup is halt grob geschnetzelt, aber die preferedSize grad noch auf gut Glück dynamisch vom Rechner rausgelesen und die Panels als Templates zurechtgeschubst, den Inhalt je bischen rumskalliert, bischen rumgeschraubt, nen quasi HelloWorld. Die dann noch Rückwärts per Panel extend noch modulariesiert vielleicht machbar, ka wozu. Eigentlich den schwarzen Kasten transparent schalten, die Panels füllen, nen schönen Nimbus skin drauf und wenn ich mal zu dem repaint und threads komme, vielleicht noch die Datengravitation und Übergabe belichten, anhalten und per drag and drop auf der runtime live umleiten und den laufenden code on the fly stückweise compilieren während das Ende noch läuft, hmm das wird'n langer Abend noch, ich bild' mir iwie ein das des hammer fun macht

Java:
package gui;

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class elementMain extends JFrame implements ActionListener {
    
    private static final long serialVersionUID = 1L;
    
    private JPanel myJPanel01;
    private JPanel myJPanel02;
    private JPanel myJPanel03;
    private JPanel myJPanel04;
    
    private JTextField myJTextField01;
    private JScrollPane myJScrollPane01;
    private JTextArea myJTextArea01;
    
    private JButton myJButton01;
    private JButton myJButton02;
    
    private String myACb01 = "myACb01";
    private String myACb02 = "myACb02";
    
    //private JTextArea myJTextArea01;
    
    public elementMain() {
        
        super("plus");
        setLayout(null);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setBackground(Color.DARK_GRAY);
        setSize(800,600);
        
        myJPanel01 = new JPanel();
        myJPanel01.setLayout(new GridLayout(3,3,20,20));
        myJPanel01.setSize(600,400);
        myJPanel01.setLocation(100,100);
        myJPanel01.setBackground(Color.BLACK);
        myJPanel01.setVisible(true);
        myJTextArea01 = new JTextArea(10,10);
        myJScrollPane01 = new JScrollPane(myJTextArea01);
        myJPanel01.add(myJScrollPane01);
        
        
        myJPanel02 = new JPanel();
        myJPanel02.setLayout(new FlowLayout());
        myJPanel02.setLocation(50,510);
        myJPanel02.setSize(300,40);
        myJPanel02.setVisible(true);
        myJPanel02.setBackground(Color.BLACK);
        myJTextField01 = new JTextField(20);
        myJPanel02.add(myJTextField01);
        
        
        myJPanel03 = new JPanel();
        myJPanel03.setLayout(new FlowLayout());
        myJPanel03.setLocation(20, 20);
        myJPanel03.setSize(200,100);
        myJPanel03.setVisible(true);
        myJPanel03.setBackground(Color.BLACK);
        myJButton01 = new JButton("Knopf 1");
        myJButton01.setActionCommand(myACb01);
        myJButton01.addActionListener(this);
        myJPanel03.add(myJButton01);
        myJButton02 = new JButton("Knopf 2");
        myJButton02.setActionCommand(myACb02);
        myJButton02.addActionListener(this);
        myJPanel03.add(myJButton02);
                
        add(myJPanel01);
        add(myJPanel02);
        add(myJPanel03);
        
    }
    
    private void resizeAll(int teiler) {
        Dimension d = new Dimension();
        int tempdpi = (int) (Toolkit.getDefaultToolkit().getScreenResolution());
        Component[] con = new Component[this.getContentPane().getComponentCount()];
        con = this.getContentPane().getComponents();
        int i = 0;
        while(i<= con.length-1) {
            if (con[i].isDisplayable()) {
                myJTextArea01.append("\n"+" at: "+con[i].getLocation().getX()+"/"+con[i].getLocation().getY()+" size: "+con[i].getSize().getWidth()+"/"+con[i].getSize().getHeight()+" element: "+con[i].getClass().toString()+"\n");
             i++; 
            }
            myJTextArea01.append("\n"+"dpi: "+tempdpi);
        }
    }
    
    public void actionPerformed (ActionEvent ae) {
        if (ae.getActionCommand().equals("myACb01")) {
            myJTextField01.setText("found: "+myJTextField01.getBackground());
            myJTextArea01.append(System.getProperties()+"\n"+myJTextField01.getRootPane()+"\n");
            
        }
        if ((ae.getSource().equals(myJButton02))) {
            
            myJTextArea01.append("  "+"\n"+System.currentTimeMillis()+"\n");
            this.getContentPane().setSize(new Dimension(400,300));
            myJPanel01.setSize((int )myJPanel01.getSize().getWidth()/2,(int )myJPanel01.getSize().getHeight()/2);
            myJPanel02.setSize((int )myJPanel02.getSize().getWidth()/2,(int )myJPanel02.getSize().getHeight()/2);
            myJPanel03.setSize((int )myJPanel03.getSize().getWidth()/2,(int )myJPanel03.getSize().getHeight()/2);
            //myJTextArea01.setText("new Area values: "+myJPanel01.getSize().getWidth()+"/"+myJPanel01.getSize().getHeight());
            resizeAll(2);
        }
    }
    
    
    public static void main (String[] args) {
        new elementMain();
    }
    
}
 
Zuletzt bearbeitet:

elischa

Mitglied
Hallo,

also ich habe jetzt 2 Mini-Templates hinbekommen, aber mit der Nebenläufigkeit tu' ich mich noch iwie schwer. Im 3. Beispiel habe ich versucht paar Punkte nacheinander zu zeichnen und die Daten zu ziehen per Timer, verliere aber das JTextField bei der Darstellung. Vielleicht mag jemand drüberschauen...Außerdem habe ich da ein Update auf dem Swing Thread im ActionListener (warum ist der nicht registriert und wo hänge ich den an ?). Wenn ich das Update in den leeren Runnable unten verschiebe, der dann weitergibt an Dispatcher, habe ich keine bewegten Punkte. Dann wollt ich noch versuchen das root JFrame Fenster, obwohl's ja schon nebenläufig ist, auch in einen eigenen Thread zu legen. Müsst' ich dann auch über extra Runnable und Dispatcher ? Die paar Comments drinne, kann man eigentlich vernachläßigen, is' halt so geschrieben wie ich's grad verstanden habe. Also eigentlich will ich 'ne einfache Methode um in die Gui etwas nachzuladen und zu zeichnen. Würde mich über ein paar Tipps freuen. Gruß
1.)
---
[Java]import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Gui01 extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;

private Container con;
private JPanel p1,p2;
private JButton[] bA;

public Gui01() {
super("MainFrame");
setLayout( new BorderLayout() );
setSize(1024,768);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

con = getContentPane(); con.setBackground(Color.WHITE);

p1 = new JPanel(); p1.setBackground(Color.DARK_GRAY);
p2 = new JPanel(); p2.setBackground(Color.BLACK);

bA = new JButton[2];
for (int i = 0; i <= bA.length-1; i++) {
bA = new JButton("Button0"+i);
bA.addActionListener(this);
p2.add(bA);
}
p1.setVisible(true); p2.setVisible(true);
con.add(p1,BorderLayout.WEST); con.add(p2, BorderLayout.EAST);

setVisible(true);
}

public void actionPerformed(ActionEvent ae) {
if ( ae.getSource().equals(bA[0]) ) {
System.out.println( ae.getActionCommand()+" fired !" );
}
if ( ae.getSource().equals(bA[1]) ) {
System.out.println( ae.getActionCommand()+" fired !" );
}
}


public static void main(String[] args) {
new Gui01();

}

}[/Java]
2.)
----
[Java]
import java.awt.Color;
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Gui02 extends JPanel {
private static final long serialVersionUID = 1L;

private JPanel p;

private JFrame frame;
private WindowAdapter wa;
private Container con;

public Gui02() {

setBackground(Color.DARK_GRAY);
setSize(800,600);
add( new JTextField("FieldText", 20) );
p = new JPanel();
p = this; p.setVisible(true);


frame = new JFrame("MainFrame");
frame.setSize(1024,768);

con = frame.getContentPane();
con.setLayout(null);
con.setBackground(Color.WHITE);


con.add(p); con.setVisible(true);


wa = new WindowAdapter() {
public void windowClosing(WindowEvent we) {
if (true)
{ System.out.println("...exit."); System.exit(0); }
}
};
frame.addWindowListener(wa);


frame.setVisible(true);
}


public static void main(String[] args) {
new Gui02();
}

}[/Java]
3.)
---[Java]
import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class GuiMain {

private JFrame frame;
private Container con;

public GuiMain() {
frame = new JFrame();
frame.setSize(1024,768);
frame.setLayout( new BorderLayout() );
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

con = frame.getContentPane();

JButton b01 = new JButton("Play!");

b01.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent ae) {

System.out.println( ae.getActionCommand() );


con.add( new CustomPanel( ), BorderLayout.CENTER );

}
}
);
con.add( b01, BorderLayout.EAST);

frame.setVisible(true);
}

}



import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.Timer;

public class CustomPanel extends JPanel implements Runnable {
private static final long serialVersionUID = 1L;

private JTextField jtf;
private ActionListener al;
private Timer timer;
private static final int freeze = 500;
private int counter = 0;


private Runnable r;

public CustomPanel() {

setSize(900,600);
setLayout(new FlowLayout());
setBackground(Color.GREEN);

jtf = new JTextField("", 50);
add(jtf);


// on fire: pull current counter stat and update this swing runnable
al = new ActionListener() {
public void actionPerformed(ActionEvent ae) {
jtf.setText("catched frame..." + String.valueOf( counter) );
repaint();
jtf.repaint();
}
};


Thread t = new Thread(this);
t.start();
}

@Override
public void run() {

r = new Runnable() { // r = this ?
public void run() {
// update protected swing runnable ?
}
};

// auto-fire event every 500 ms
timer = new Timer(freeze,al);
timer.start();

// not slowed
while (true) {

counter++;
System.out.println(counter);

try { // this swing r protected by dispatcher
SwingUtilities.invokeAndWait(r);
}
catch (Exception e) { // thread not running or sth. in dispatcher
System.err.println(e);
}

}

}

public void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillOval(counter/10000, counter/10000, 10, 10);
}

}



public class GuiRunner {

public static void main(String[] args) {
new GuiMain();

}

}[/Java]
 
Zuletzt bearbeitet:

elischa

Mitglied
hat jetzt doch geklappt, den Haupt JFrame aus der GuiMain an CustomPanel bei Instanzierung mit übergeben und in der CustomDatei dann diese JFrame Referenz im ActionListener am Ende nochmal Visible machen.
 

Thallius

Top Contributor
Hallo elischa,

in deinem Konstruktor kannst du erstmal das
Code:
this.
vor den Eigenschaften weglassen.

Das finde ich einen blöden Tipp. Es ist sehr löblich bei jedem Zugriff auf eine Instanzenvariable this zu verwenden. Das erleichtert das Lesen des Codes ungemein und beugt doofen Fehlern vor wenn man mal aus versehen eine lokale Variable genauso nennt wie eine IInstanzvariable.

Gruß

Claus
 

elischa

Mitglied
ehm sry kann da nur unregelmäßig dran arbeiten, Klausurenphase und so...
Aber Verbesserungsvorschläge und so nehme ich auf jeden auch gern. Das mit dem this habe ich auch noch nicht ganz verinnerlicht. Ich dachte ich referenziere damit immer die aktuell laufende Instanz (und es wäre möglicherweise leserlicher wenn es drin ist). Aber ich glaube da ist noch mehr in "this". Muss ich noch genauer durcharbeiten.
 

Ruzmanz

Top Contributor
Das finde ich einen blöden Tipp. Es ist sehr löblich bei jedem Zugriff auf eine Instanzenvariable this zu verwenden. Das erleichtert das Lesen des Codes ungemein und beugt doofen Fehlern vor wenn man mal aus versehen eine lokale Variable genauso nennt wie eine IInstanzvariable.

"this." wegzulassen, weil man es weglassen kann ... ist keine gute Begründung. Ich verwende "this" auch nicht. Sehe darin keinen Mehrwert, da die IDEs den lokalen Variablen und Instanzvariablen andere Farben geben. Methoden sollten zudem mMn so kurz gehalten werden, dass selbst im Texteditor keine Verwechslung möglich ist. Es hat sich (zeitweise) das "m_" Präfix vor Instanzvariablen durchgesetzt. Eclipse bietet die Möglichkeit einen Instanzvariablen-Präfix zu setzen, sodass bei der Entwicklung (Generierung von Gettern und Settern etc.) keine Nachteile entstehen. Das Präfix ist deutlich kürzer als "this." und dadurch leserlicher, evtl. sicherer. Eine Instanzvariable bei der man das "m_" vergessen hat, fällt schnell auf. Sollte mal das "this." fehlen, wird der Fehler (mMn) nicht so schnell bemerkt. Gegen "m_" und "this." spricht, dass man sich in falscher Sicherheit wiegt. Immerhin geht man davon aus, dass es sich um lokale Variabeln handelt, sofern das "m_" und "this." nicht vorhanden ist. Das wurde zwar per Konvention festgelegt, interessiert den Java Compiler nur bedingt. (Muss zugeben, dass ich nicht genau weis, ob es Toolunterstützung für "this." vor Instanzvariablen gibt, dann würde die Sache widerum ein bisschen anders aussehen).

Sicherheit? Sehe ich bei keinen der drei Varianten. Lesbarkeit? Ohne "this." und "m_" werden lokale Variablen und Instanzvariablen kurz und farblich hervorgehoben.

Fazit: Da ich in keinem Projekt die Konvention (ohne, "this" oder "m_") geändert habe, hebt sich mMn keiner der drei Varianten deutlich ab. Somit sollte man in einem Projekt die Konvention einfach nur konsequent befolgen.
 

Thallius

Top Contributor
"this." wegzulassen, weil man es weglassen kann ... ist keine gute Begründung. Ich verwende "this" auch nicht. Sehe darin keinen Mehrwert, da die IDEs den lokalen Variablen und Instanzvariablen andere Farben geben....

Eclipse macht das Defaultmäßig nicht. Du kannst also nicht davon ausgehen das es bei allen so ist nur weil Deine IDE das macht.

Gruß

Claus
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
kaoZ Swing JFrame lässt sich nicht über dispose() abbauen AWT, Swing, JavaFX & SWT 0
B JFrame: Benachrichtung über Größenänderung AWT, Swing, JavaFX & SWT 4
A 1 JFrame und 3 Panel Nacheinander anzeigenlassen über Button AWT, Swing, JavaFX & SWT 5
C TextArea Problem :( TextArea über komplettem JFrame AWT, Swing, JavaFX & SWT 2
M JFrame über x schliessen überschreiben funktioniert nicht! AWT, Swing, JavaFX & SWT 7
G MouseEvent Problem mit JFrame über einen modalen JDialog AWT, Swing, JavaFX & SWT 3
F JFrame über Button schliessen AWT, Swing, JavaFX & SWT 10
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
Paty JFrame anfänger bräuchte hilfestellung AWT, Swing, JavaFX & SWT 7
Apfelbaum2005 Swing JFrame mehrere JPanels mit unterschiedlichen Formen hinzufügen AWT, Swing, JavaFX & SWT 1
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
Mausposition relativ zu JFrame bekommen AWT, Swing, JavaFX & SWT 6
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
N CPU Belastung bei offenem JFrame auf fast 100% AWT, Swing, JavaFX & SWT 15
N Knopf ganz oben (JFrame) AWT, Swing, JavaFX & SWT 9
N JFrame löscht alles, wenn groß gemacht AWT, Swing, JavaFX & SWT 9
N jFrame löscht am Ende des Threads alles AWT, Swing, JavaFX & SWT 2
N JFrame loescht alles, sobald der Thread zuende ist AWT, Swing, JavaFX & SWT 22
E JFrame resizing AWT, Swing, JavaFX & SWT 2
E Swing Mausposition auf einem JFrame erkennen AWT, Swing, JavaFX & SWT 5
Lunar Swing JFrame erstellt; weitere Elemente werden nicht eingefügt/sind nicht zu sehen AWT, Swing, JavaFX & SWT 4
L JFrame Gui in anderer Methode aufrufen AWT, Swing, JavaFX & SWT 0
H Beim JFrame erstellen ein anderes schließen AWT, Swing, JavaFX & SWT 0
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
H Tabelle in JFrame einfügen AWT, Swing, JavaFX & SWT 1
VPChief Ein JFrame ohne setUndecorated(true); nicht verschiebbar machen. AWT, Swing, JavaFX & SWT 6
R Swing Hat mein JFrame meinen Component? AWT, Swing, JavaFX & SWT 2
R Swing Design des oberen Balkens in JFrame AWT, Swing, JavaFX & SWT 2
B KeyListener auf JFrame reagiert nicht AWT, Swing, JavaFX & SWT 8
R Swing Komponente im JFrame überschreinen sich AWT, Swing, JavaFX & SWT 7
R Swing Ein gezeichneten String aus dem JFrame löschen AWT, Swing, JavaFX & SWT 5
J Exception beim JFrame erstellen AWT, Swing, JavaFX & SWT 6
T JFrame aktualisieren AWT, Swing, JavaFX & SWT 2
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
R Swing Background Image in JFrame implementieren AWT, Swing, JavaFX & SWT 40
L Verbindung von Code und JFrame AWT, Swing, JavaFX & SWT 4
L JFrame wird zu klein erstellt AWT, Swing, JavaFX & SWT 7
dereki2000 Swing JFrame nah hinzufügen von Komponenten akualisieren. AWT, Swing, JavaFX & SWT 2
T JFrame Bild einfügen AWT, Swing, JavaFX & SWT 9
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
P Swing Mehrere JPanels auf ein JFrame hinzufügen? AWT, Swing, JavaFX & SWT 2
F JFrame zeigt nicht alle Elemente auf anhieb an AWT, Swing, JavaFX & SWT 4
P JPanle, JFrame und Graphics AWT, Swing, JavaFX & SWT 2
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
K Grafik in JFrame einpassen AWT, Swing, JavaFX & SWT 3
D Mit Jmenu neue JFrame öffnen AWT, Swing, JavaFX & SWT 2
J BackgroundJPanel passt sich dem JFrame nicht an AWT, Swing, JavaFX & SWT 7
C Swing JFrame ändert Größe AWT, Swing, JavaFX & SWT 0
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
K JFrame bei JUnit Tests AWT, Swing, JavaFX & SWT 2
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
D JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 1
R Swing JPanels auf JFrame auf verfügbaren Platz aufblasen AWT, Swing, JavaFX & SWT 4
JR2205 Swing JxMaps Einbindung Netbeans JFrame AWT, Swing, JavaFX & SWT 4
Zar von Domarus JFrame zu BufferedImage konvertieren AWT, Swing, JavaFX & SWT 3
K KeyListener ohne JFrame AWT, Swing, JavaFX & SWT 9
Joker4632 JFrame in eine Runnable auslagern? AWT, Swing, JavaFX & SWT 4
M Limit für JFrame-Vergrößerung AWT, Swing, JavaFX & SWT 8
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
MaxG. JFrame Größe ändern AWT, Swing, JavaFX & SWT 16
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
G Swing Wenn ich mein JFrame Fenster vergrößere die Inhalte anpassen AWT, Swing, JavaFX & SWT 1
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
Ghostman1711 JFrame closing AWT, Swing, JavaFX & SWT 3
R Engineklasse mit JFrame AWT, Swing, JavaFX & SWT 4
M Default-WindowListener JFrame entfernen (Stichwort: iconified) AWT, Swing, JavaFX & SWT 4
ms_cikar Jframe zurück zu frame1 AWT, Swing, JavaFX & SWT 14
C Jframe ohne Rahmen AWT, Swing, JavaFX & SWT 3
lumpigerAffe Swing Jframe aktualisieren AWT, Swing, JavaFX & SWT 27
A Swing JFrame neuzeichnen lassen, position neu berechnen lassen? AWT, Swing, JavaFX & SWT 9
R JFrame schließen AWT, Swing, JavaFX & SWT 9
P Swing JFrame minimiert sich bei Doppelklick auf die Titel-Leiste AWT, Swing, JavaFX & SWT 16
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
I JFrame an Bildschirm anpassen AWT, Swing, JavaFX & SWT 1
I JFrame Bild strecken und auf Bildschirmgröße anpassen AWT, Swing, JavaFX & SWT 2
P JFrame schrumpft bei Doppelklick auf die Titelleiste AWT, Swing, JavaFX & SWT 0
G JFrame - manuell Größe verändern AWT, Swing, JavaFX & SWT 6
D JFrame mindestgröße erzwingen AWT, Swing, JavaFX & SWT 2
H Swing JFrame mit JFXPanel NPE bei dispose() AWT, Swing, JavaFX & SWT 6
C Swing Borderlayout im JFrame AWT, Swing, JavaFX & SWT 4
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
G Swing JFrame öffnen bei Pidgin Benachrichtigung AWT, Swing, JavaFX & SWT 5
OlafHD JLabel im JFrame Zentrieren AWT, Swing, JavaFX & SWT 2
S Kein JFrame unter Mac? AWT, Swing, JavaFX & SWT 8
G Resize JFrame AWT, Swing, JavaFX & SWT 8
J Teiltransparenter JFrame mit Blur-Effekt AWT, Swing, JavaFX & SWT 2
K Bild in JFrame AWT, Swing, JavaFX & SWT 2
V JScrollPane im zur Laufzeit verändernden JFrame AWT, Swing, JavaFX & SWT 0
M NetBeans JFrame Grundlangen fragen AWT, Swing, JavaFX & SWT 6
I Neues JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 5
S JFrame -> setVisible AWT, Swing, JavaFX & SWT 3
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
I Swing JMenuBar auch unten am JFrame? AWT, Swing, JavaFX & SWT 2
K SplashScreen neben JFrame behalten AWT, Swing, JavaFX & SWT 10
F Swing JLabel in JFrame anpassen AWT, Swing, JavaFX & SWT 20
B Swing Unterteiltes JFrame mit Bild in der Mitte AWT, Swing, JavaFX & SWT 4
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
T Applet Applet in JFrame einbinden AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben