tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von genodeftest
  • 1 Beitrag von genodeftest
  • 1 Beitrag von Fabio Hellmann
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
352
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    JensOV JensOV ist offline Rookie
    Registriert seit
    Jan 2006
    Beiträge
    7
    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ß
    Jens
    Geändert von JensOV (13.08.11 um 19:06 Uhr)
     

  2. #2
    genodeftest genodeftest ist offline Mitglied Brillant
    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.
    JensOV bedankt sich. 
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  3. #3
    JensOV JensOV ist offline Rookie
    Registriert seit
    Jan 2006
    Beiträge
    7
    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)
     

  4. #4
    genodeftest genodeftest ist offline Mitglied Brillant
    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.
    JensOV bedankt sich. 
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  5. #5
    JensOV JensOV ist offline Rookie
    Registriert seit
    Jan 2006
    Beiträge
    7
    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.
     

  6. #6
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist gerade online Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Ja genau, eine andere Möglichkeit gibt es in diesem Fall nicht.
    JensOV bedankt sich. 
    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.

  7. #7
    JensOV JensOV ist offline Rookie
    Registriert seit
    Jan 2006
    Beiträge
    7
    Dann bedanke ich mich vielmals für eure Mühe. Damit wäre soweit alles geklärt.
     

  8. #8
    genodeftest genodeftest ist offline Mitglied Brillant
    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)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  9. #9
    JensOV JensOV ist offline Rookie
    Registriert seit
    Jan 2006
    Beiträge
    7
    Mit dem Thema innere Klassen werde ich mich mal in allerruhe befassen.
     

Ähnliche Themen

  1. Aus einem JFrame anderes JFrame starten
    Von maddos im Forum Java
    Antworten: 3
    Letzter Beitrag: 09.08.07, 12:24
  2. Zugriff auf JFrame in eigenem Thread?
    Von DarthShader im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 04.04.07, 10:08
  3. Ein JFrame aus einem anderem JFrame aufrufen!
    Von Lautsprecher im Forum Java
    Antworten: 1
    Letzter Beitrag: 14.11.05, 09:37
  4. Antworten: 2
    Letzter Beitrag: 07.09.05, 12:16
  5. Zugriff auf Komponenten im Jar-File
    Von catarock im Forum Java
    Antworten: 9
    Letzter Beitrag: 06.06.05, 08:17

Stichworte