3Danke
ERLEDIGT
JA
JA
ANTWORTEN
8
8
ZUGRIFFE
352
352
EMPFEHLEN
-
Hallo zusammen,
ich komme gerade an einer Stelle in meinem Testprogramm nicht weiter. Ich möchte wohl Zugriff auf die Komponenten in der Methode init_comp() bekommen. Gibt es eine Möglichkeit direkt auf diese zuzugreifen ? Oder muss ich alle direkt hinter "private JLabel lbl_label;" aufführen ?
Worum es mir geht ist folgendes, ich möchte über Eventhandler diverse Komponenten verändern, z.B durch ein Button-Klick-Event einen Text in das JTextField einfügen oder die Hintergrundfarbe verändern.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class TestGUI extends JFrame implements ActionListener { private JLabel lbl_label; //Konstruktor public TestGUI() { super(); setTitle("Testen"); setSize(300,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.add(init_comp()); //einfügen des JPanel //pack(); setVisible(true); } public JPanel init_comp() { //Komponenten - //Worum es geht !! //Wie bekomme ich Zugriff auf diese Komponenten? JPanel pane1 = new JPanel(); JTextField txt1 = new JTextField(); JLabel lbl1 = new JLabel("Textausgabe"); JButton btn1 = new JButton("Klick mich"); lbl_label = new JLabel("Text"); //Layout festlegen und Komponenten in Container einfügen pane1.setLayout(new BorderLayout()); pane1.add("North", txt1); pane1.add("Center", lbl1); pane1.add("East", lbl_label); pane1.add("South", btn1); //Listener btn1.addActionListener(this); //Rückgabe return pane1; } //Main-Methode public static void main(String[] args) { TestGUI test1 = new TestGUI(); } //überschreiben der actionPerformed-Methode - ActionListener @Override public void actionPerformed(ActionEvent ae) { //Testveränderungen setTitle("Neuer Titel"); lbl_label.setText("geänderter Text"); } }
Ich hoffe ich habe diesen Thread im richtigen Forenteil eröffnet.
Schonmal vielen Dank im Voraus.
Gruß
JensGeändert von JensOV (13.08.11 um 19:06 Uhr)
-
13.08.11 19:01 #2
- Registriert seit
- Jun 2009
- Beiträge
- 870
Hallo
Code bitte in Java-Tags (siehe meine Signatur)
Du könntest die Variablen so wie das JLabel lbl_label klassenweit sichtbar machen und nach außer via getter/setter-Methoden zugreifbar machen.Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Hallo genodeftest,
danke für deine schnelle Antwort. Das mit den Tags ist schon abgeändert
. Könntest du mir bezüglich des getter/setter evtl ein Beispiel geben wie genau du das meinst?.
Evtl. so ?
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class TestGUI extends JFrame implements ActionListener { private JLabel lbl_label; //Konstruktor public TestGUI() { super(); setTitle("Testen"); setSize(300,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.add(init_comp()); //einfügen des JPanel //pack(); setVisible(true); } public JPanel init_comp() { //Komponenten - //Worum es geht !! //Wie bekomme ich Zugriff auf diese Komponenten? JPanel pane1 = new JPanel(); JTextField txt1 = new JTextField(); JLabel lbl1 = new JLabel("Textausgabe"); JButton btn1 = new JButton("Klick mich"); lbl_label = new JLabel("Text"); //Layout festlegen und Komponenten in Container einfügen pane1.setLayout(new BorderLayout()); pane1.add("North", txt1); pane1.add("Center", lbl1); pane1.add("East", lbl_label); pane1.add("South", btn1); //Listener btn1.addActionListener(this); //Rückgabe return pane1; } // Änderungen public String getLabelText() { /* ... */ String s = lbl_label.getText(); return s; } public void setLabelText() { lbl_label.setText("blaa"); } //Main-Methode public static void main(String[] args) { TestGUI test1 = new TestGUI(); } //überschreiben der actionPerformed-Methode - ActionListener @Override public void actionPerformed(ActionEvent ae) { //Testveränderungen setTitle("Neuer Titel"); //lbl_label.setText("geänderter Text"); setLabelText(); } }
Geändert von JensOV (13.08.11 um 19:28 Uhr)
-
13.08.11 19:42 #4
- Registriert seit
- Jun 2009
- Beiträge
- 870
Ja, so ungefähr. Hier leicht modifiziert:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class TestGUI extends JFrame implements ActionListener { private JLabel lbl_label; //Konstruktor public TestGUI() { super(); setTitle("Testen"); setSize(300,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.add(init_comp()); //einfügen des JPanel //pack(); setVisible(true); } public JPanel init_comp() { //Komponenten - //Worum es geht !! //Wie bekomme ich Zugriff auf diese Komponenten? JPanel pane1 = new JPanel(); JTextField txt1 = new JTextField(); JLabel lbl1 = new JLabel("Textausgabe"); JButton btn1 = new JButton("Klick mich"); lbl_label = new JLabel("Text"); //Layout festlegen und Komponenten in Container einfügen pane1.setLayout(new BorderLayout()); pane1.add(BorderLayout.NORTH, txt1); pane1.add(BorderLayout.CENTER, lbl1); pane1.add(BorderLayout.EAST, lbl_label); pane1.add(BorderLayout.SOUTH, btn1); //Listener btn1.addActionListener(this); //Rückgabe return pane1; } // Änderungen public String getLabelText() { return lbl_label.getText(); } public void setLabelText(String newText) { lbl_label.setText(newText); } //Main-Methode public static void main(String[] args) { TestGUI test1 = new TestGUI(); } //überschreiben der actionPerformed-Methode - ActionListener @Override public void actionPerformed(ActionEvent ae) { //Testveränderungen setTitle("Neuer Titel"); //lbl_label.setText("geänderter Text"); setLabelText(); } }
PS: wenn du eine Einführung in Java brauchst, schau dir doch http://openbook.galileocomputing.de/javainsel/ an.Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Das mit dem get und set war nur eben fix hingeschrieben
... aber darum ging es mir eigentlich nicht so direkt.
Das heißt aber im Endeffekt immer noch das ich gezwungen bin alle Komponenten Klassenweit sichtbar zu machen um sie verändern zu können, weil ich an die Variablen der Methode net rankomme.
-
13.08.11 19:55 #6
Ja genau, eine andere Möglichkeit gibt es in diesem Fall nicht.
Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
-
Dann bedanke ich mich vielmals für eure Mühe. Damit wäre soweit alles geklärt.
-
13.08.11 20:13 #8
- Registriert seit
- Jun 2009
- Beiträge
- 870
Du könntest auch mit inneren Klassen arbeiten... das wird aber aufwändiger.
Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Mit dem Thema innere Klassen werde ich mich mal in allerruhe befassen.
Ähnliche Themen
-
Aus einem JFrame anderes JFrame starten
Von maddos im Forum JavaAntworten: 3Letzter Beitrag: 09.08.07, 12:24 -
Zugriff auf JFrame in eigenem Thread?
Von DarthShader im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 04.04.07, 10:08 -
Ein JFrame aus einem anderem JFrame aufrufen!
Von Lautsprecher im Forum JavaAntworten: 1Letzter Beitrag: 14.11.05, 09:37 -
JFrame sperren oder neuen JFrame modal darstellen
Von Scrapy im Forum JavaAntworten: 2Letzter Beitrag: 07.09.05, 12:16 -
Zugriff auf Komponenten im Jar-File
Von catarock im Forum JavaAntworten: 9Letzter Beitrag: 06.06.05, 08:17





Zitieren
Login





