Swing Komponenten enablen?

mathiasj

Bekanntes Mitglied
Hallo,
ich habe angefangen ein Vokabellernprogramm zu schreiben, und stehe jetzt vor folgendem Problem: Ich disable in einer Methode einige Komponenten, und will sie in einer anderen Methode wieder enablen; doch dann bekomme ich eine NullPointerException...

Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

public class Erstellmodus {
  JTextArea frage;
  JTextArea antwort;
  JButton naechsteKarteButton;
  
  public static void main(String[] args) {
    try { 
      UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
    } catch(Exception e) {
      e.printStackTrace();
    }
    Erstellmodus a = new Erstellmodus();
    a.guiErstellen();
  }
  
  public void guiErstellen() {
    JFrame frame = new JFrame("Learner | Erstellmodus");
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setSize(550,600);
    
    Font grosseSchrift = new Font("sanserif",Font.PLAIN, 24);
    
    Image icon = new ImageIcon("Bilder/LearnerLogo.jpg").getImage();
    frame.setIconImage(icon);
    
    JPanel panel = new JPanel();
    
    JLabel frageLabel = new JLabel("Die Frage lautet: ");
    JLabel antwortLabel = new JLabel("Die Antwort lautet: ");
    
    frage = new JTextArea(6,20);
    frage.setLineWrap(true);
    frage.setWrapStyleWord(true);
    frage.setFont(grosseSchrift);
    frage.setEnabled(false); //Das ist einer der Komponenten, die ich disable
    
    JScrollPane fScroller = new JScrollPane(frage);
    fScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    fScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    
    antwort = new JTextArea(6,20);
    antwort.setLineWrap(true);
    antwort.setWrapStyleWord(true);
    antwort.setFont(grosseSchrift);
    antwort.setEnabled(false);
    
    JScrollPane aScroller = new JScrollPane(antwort);
    aScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    aScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    
    naechsteKarteButton = new JButton("Nächste Karte");
    naechsteKarteButton.setEnabled(false);
    naechsteKarteButton.addActionListener(new naechsteKarteButtonListener());
    
    JMenuBar menueLeiste = new JMenuBar();
    JMenu datei = new JMenu("Datei");
    JMenuItem erstellenMenuePunkt = new JMenuItem("Kartensatz erstellen");
    JMenuItem bearbeitenMenuePunkt = new JMenuItem("Kartensatz bearbeiten");
    
    erstellenMenuePunkt.addActionListener(new erstellenMenuePunktListener());
    bearbeitenMenuePunkt.addActionListener(new bearbeitenMenuePunktListener());
    
    menueLeiste.add(datei);
    datei.add(erstellenMenuePunkt);
    datei.add(bearbeitenMenuePunkt);
    
    panel.add(frageLabel);
    panel.add(fScroller);
    panel.add(antwortLabel);
    panel.add(aScroller);
    panel.add(naechsteKarteButton);
    
    frame.setJMenuBar(menueLeiste);
    frame.add(panel);
    frame.setVisible(true);
  }
  
  public void erstellen() {
    frage.setEnabled(true);                   //Hier tritt die Exception auf
    antwort.setEnabled(true);
    naechsteKarteButton.setEnabled(true);
  }
  
  public class erstellenMenuePunktListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      Erstellmodus a = new Erstellmodus();
      a.erstellen();
    }
  }
  
  public class bearbeitenMenuePunktListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      
    }
  }
  
  public class naechsteKarteButtonListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      
    }
  }
}

Hier bekomme ich wie gesagt eine NullPointerException... Wenn ich das ganze aber so mache:

Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

public class Erstellmodus {
  JTextArea frage = new JTextArea(6,20);  //Hier sind die Änderungen!
  JTextArea antwort = new JTextArea(6,20);
  JButton naechsteKarteButton = new JButton("Nächste Karte");
  
  public static void main(String[] args) {
    try { 
      UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
    } catch(Exception e) {
      e.printStackTrace();
    }
    Erstellmodus a = new Erstellmodus();
    a.guiErstellen();
  }
  
  public void guiErstellen() {
    JFrame frame = new JFrame("Learner | Erstellmodus");
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setSize(550,600);
    
    Font grosseSchrift = new Font("sanserif",Font.PLAIN, 24);
    
    Image icon = new ImageIcon("Bilder/LearnerLogo.jpg").getImage();
    frame.setIconImage(icon);
    
    JPanel panel = new JPanel();
    
    JLabel frageLabel = new JLabel("Die Frage lautet: ");
    JLabel antwortLabel = new JLabel("Die Antwort lautet: ");
    
   
    frage.setLineWrap(true);
    frage.setWrapStyleWord(true);
    frage.setFont(grosseSchrift);
    frage.setEnabled(false);
    
    JScrollPane fScroller = new JScrollPane(frage);
    fScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    fScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    
    
    antwort.setLineWrap(true);
    antwort.setWrapStyleWord(true);
    antwort.setFont(grosseSchrift);
    antwort.setEnabled(false);
    
    JScrollPane aScroller = new JScrollPane(antwort);
    aScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    aScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    
   
    naechsteKarteButton.setEnabled(false);
    naechsteKarteButton.addActionListener(new naechsteKarteButtonListener());
    
    JMenuBar menueLeiste = new JMenuBar();
    JMenu datei = new JMenu("Datei");
    JMenuItem erstellenMenuePunkt = new JMenuItem("Kartensatz erstellen");
    JMenuItem bearbeitenMenuePunkt = new JMenuItem("Kartensatz bearbeiten");
    
    erstellenMenuePunkt.addActionListener(new erstellenMenuePunktListener());
    bearbeitenMenuePunkt.addActionListener(new bearbeitenMenuePunktListener());
    
    menueLeiste.add(datei);
    datei.add(erstellenMenuePunkt);
    datei.add(bearbeitenMenuePunkt);
    
    panel.add(frageLabel);
    panel.add(fScroller);
    panel.add(antwortLabel);
    panel.add(aScroller);
    panel.add(naechsteKarteButton);
    
    frame.setJMenuBar(menueLeiste);
    frame.add(panel);
    frame.setVisible(true);
  }
  
  public void erstellen() {
    frage.setEnabled(true);
    antwort.setEnabled(true);
    naechsteKarteButton.setEnabled(true);
  }
  
  public class erstellenMenuePunktListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      Erstellmodus a = new Erstellmodus();
      a.erstellen();
    }
  }
  
  public class bearbeitenMenuePunktListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      
    }
  }
  
  public class naechsteKarteButtonListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      
    }
  }
}
, dann passiert überhaupt nichts, wenn ich auf 'Kartensatz erstellen' klicke...

LG,
mathiasj
 

Michael...

Top Contributor
Im ersten Code wird der Variablen
Code:
frage
nie ein Objekt zugewiesen. ==> NullPointerEx
Den Rest habe ich mir nicht genau angeschaut, aber in beiden Varianten erzeugst Du ein neues Erstellmodus Objekt und das kann nicht gewollt sein!?
 

xehpuk

Top Contributor
[JAVA=90] public class erstellenMenuePunktListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Erstellmodus a = new Erstellmodus();
a.erstellen();
}
}[/code]
Du erstellst hier eine neue Instanz von
Code:
Erstellmodus
. Daher sind alle Instanzvariablen auf
Code:
null
gesetzt.
In Wirklichkeit willst du auf die bereits existente Instanz zugreifen. Dies macht man bei inneren Klassen so:
[JAVA=90] public class erstellenMenuePunktListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Erstellmodus.this.erstellen();
}
}[/code]
 

mathiasj

Bekanntes Mitglied
Ah, danke! Ich hab mich auch schon gewundert, warum this.erstellen() nicht funktioniert, aber das ist ja eig. klar, da der Listener ja eine eigene Klasse ist Danke!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Swing Komponenten nicht sichtbar nach Start AWT, Swing, JavaFX & SWT 12
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
BabySuna Swing Komponenten auslagern auf separate Datei AWT, Swing, JavaFX & SWT 8
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
P AWT Einzelne Komponenten zur Laufzeit austauschen? AWT, Swing, JavaFX & SWT 3
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
F Gebundene Eigenschaften bei Komponenten mit NetBeans verarbeiten AWT, Swing, JavaFX & SWT 3
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
dereki2000 Swing JFrame nah hinzufügen von Komponenten akualisieren. AWT, Swing, JavaFX & SWT 2
L Swing Komponenten erst nach Resize sichtbar AWT, Swing, JavaFX & SWT 2
S Swing Panel übernimmt komponenten von anderem AWT, Swing, JavaFX & SWT 7
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
P Gleichmäßige Anodnung von Komponenten im migLayout AWT, Swing, JavaFX & SWT 2
DaCrazyJavaExpert Swing Komponenten genauer anordnen. AWT, Swing, JavaFX & SWT 13
DaCrazyJavaExpert Swing Komponenten in GridBagLayout werden Falsch angeordnet AWT, Swing, JavaFX & SWT 1
P Größe und Ausrichtung von Komponenten festlegen AWT, Swing, JavaFX & SWT 13
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
N Swing Wie Programm strukturieren? (Dynamisch Komponenten hinzufügen) AWT, Swing, JavaFX & SWT 1
Neumi5694 LookAndFeel Look & Feel nicht angezeigter Komponenten ändern AWT, Swing, JavaFX & SWT 6
D JavaFX GUI Komponenten werden langsam bei größerer Datenmenge AWT, Swing, JavaFX & SWT 6
R Komponenten von JPanel bleiben unsichtbar AWT, Swing, JavaFX & SWT 2
D JavaFX Welche Komponenten vermisst ihr? Welche wären essenziell notwendig? AWT, Swing, JavaFX & SWT 8
M Datei mit Komponenten einbinden AWT, Swing, JavaFX & SWT 7
T SWT Externer zugrif auf SWT Komponenten AWT, Swing, JavaFX & SWT 3
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
J MouseOver bei Komponenten AWT, Swing, JavaFX & SWT 9
S Größe der Komponenten, beim ändern der größe des Frames, mit ändern! AWT, Swing, JavaFX & SWT 2
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
G Komponenten vergrößern sich nicht trotz Layoutmanager AWT, Swing, JavaFX & SWT 24
M JavaFX Scenebuilder eigene Komponenten AWT, Swing, JavaFX & SWT 8
A Swing per JComboBox gewünschtes Attribut auswählen und Komponenten passen sich an AWT, Swing, JavaFX & SWT 7
A JavaFX Eigene Komponenten im Scene Builder AWT, Swing, JavaFX & SWT 0
Q Swing Fenster updaten - Hinzugefügte Komponenten darstellen AWT, Swing, JavaFX & SWT 3
S BoxLayout: Anordnung der Komponenten links statt zentriert AWT, Swing, JavaFX & SWT 0
Bartertown JTable - Verschiedene Komponenten in einer Spalte unterbringen AWT, Swing, JavaFX & SWT 3
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
G Applet Applet Komponenten flackern AWT, Swing, JavaFX & SWT 10
K LayoutManager Probleme mit 2 Komponenten AWT, Swing, JavaFX & SWT 9
M Komponenten übereinander AWT, Swing, JavaFX & SWT 7
R Komponenten werden erst nach maximierung des Frames sichtbar (Linux) AWT, Swing, JavaFX & SWT 5
H Swing Getter für GUI-Komponenten AWT, Swing, JavaFX & SWT 3
B Komponenten in Fenster verdrängen sich untereinander AWT, Swing, JavaFX & SWT 6
N Komponenten übereinander AWT, Swing, JavaFX & SWT 3
S Anordnung von GUI-Komponenten mit LayouManger (Problem beim anzeigen von JTextField) AWT, Swing, JavaFX & SWT 5
X Java Komponenten jeder Zeit hinzufügen können AWT, Swing, JavaFX & SWT 3
S View-Komponenten im Controller bekannt machen AWT, Swing, JavaFX & SWT 7
D Grafische Komponenten komplett neu aufbauen (Neukonstruktion) AWT, Swing, JavaFX & SWT 5
A AWT Komponenten in JavaFX einbetten AWT, Swing, JavaFX & SWT 9
M Swing Komponenten erscheinen beim darüberfahren? AWT, Swing, JavaFX & SWT 7
H Komponenten unmittelbar nach dem Ausführen teilweise unsichtbar AWT, Swing, JavaFX & SWT 3
K GUI in Komponenten aufteilen (MVC) AWT, Swing, JavaFX & SWT 2
W Funktionen, sowie aufruf einiger Komponenten AWT, Swing, JavaFX & SWT 4
J Alle Komponenten eines JFrames durchlaufen AWT, Swing, JavaFX & SWT 2
R Swing Komponenten bleiben bei Animation unsichtbar AWT, Swing, JavaFX & SWT 7
T Unter JPanel liegende Komponenten "totschalten" AWT, Swing, JavaFX & SWT 5
morphesus Swing Komponenten werden nicht angezeigt AWT, Swing, JavaFX & SWT 8
C Swing Reihenfolge der Initialisierung von Komponenten AWT, Swing, JavaFX & SWT 6
Asamandra LayoutManager GridBagLayout - Komponenten (mit fill?) vergrößern aber Proportionen dabei erhalten? AWT, Swing, JavaFX & SWT 3
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 7
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 2
W Bildgröße automatisch an Komponenten anpassen AWT, Swing, JavaFX & SWT 3
TheWhiteShadow Swing Komponenten organisieren AWT, Swing, JavaFX & SWT 9
S Überlappung zweier Komponenten AWT, Swing, JavaFX & SWT 12
Z größe der komponenten bestimmen AWT, Swing, JavaFX & SWT 16
C GUI-Komponenten skalieren AWT, Swing, JavaFX & SWT 10
M Seltsames Problem mit Resize eines Fensters und seiner Komponenten AWT, Swing, JavaFX & SWT 2
D Swing Komponenten verstecken AWT, Swing, JavaFX & SWT 4
X Swing Resizing der Komponenten innheralb eines Panels AWT, Swing, JavaFX & SWT 2
T Swing Font für alle Komponenten ändern AWT, Swing, JavaFX & SWT 2
S Problem mit Swing Komponenten AWT, Swing, JavaFX & SWT 11
A Swing Alle Komponenten auf JFrame ermitteln AWT, Swing, JavaFX & SWT 4
E LookAndFeel Eigene Komponenten mit Synth L&F stylen AWT, Swing, JavaFX & SWT 2
S Swing Frame und Klasse extends JPanel - Komponenten zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 18
S JButton und textfield.setText - Komponenten über-/verdecken sich AWT, Swing, JavaFX & SWT 15
M Komponenten übereinander prüfen AWT, Swing, JavaFX & SWT 3
W LayoutManager GridBag richtig nutzen - Komponenten richtig anordnen und automatisch vergrößern AWT, Swing, JavaFX & SWT 5
M Komponenten in anderer Reihenfolge anzeigen AWT, Swing, JavaFX & SWT 4
G swing Komponenten verrutschen ständig... AWT, Swing, JavaFX & SWT 6
D Mit GridBayLayout Komponenten anordnen AWT, Swing, JavaFX & SWT 6
N Window transparent, Komponenten nicht transparent AWT, Swing, JavaFX & SWT 11
R Farbänderung von Komponenten wird nicht wirksam AWT, Swing, JavaFX & SWT 7
P Swing Hierachie oder Reihenfolge von Komponenten AWT, Swing, JavaFX & SWT 5
T Sich überlappende Komponenten AWT, Swing, JavaFX & SWT 2
D Swing Probleme beim Anzeigen der einzelnen Komponenten AWT, Swing, JavaFX & SWT 16
R Swing Komponenten klein angezeigt AWT, Swing, JavaFX & SWT 10
D Swing Swing Komponenten verschieben AWT, Swing, JavaFX & SWT 7
B Komponenten nach Skalierung nicht mehr ansprechbar AWT, Swing, JavaFX & SWT 9
Kr0e AWT Komponenten in JPanel AWT, Swing, JavaFX & SWT 6
JuliaOne Komponenten innerhalb eine JScrollpane werden auch ausserhalb davon gezeichnet! AWT, Swing, JavaFX & SWT 7
xehpuk Swing Komponenten werden durch setFont() winzig AWT, Swing, JavaFX & SWT 3
O Größe von Komponenten im JFrame manuell verändern AWT, Swing, JavaFX & SWT 2
H Komponenten anwendugsweit formatieren AWT, Swing, JavaFX & SWT 6
M Swing Komponenten mit fester Größe an Fensterrand(JFrame) AWT, Swing, JavaFX & SWT 2
A Komponenten zur Laufzeit entfernen AWT, Swing, JavaFX & SWT 3
Weiti Swing Animationen - Drehung aller Komponenten auf Knopfdruck AWT, Swing, JavaFX & SWT 12
P LayoutManager Komponenten einfügen (FlowLayout, BoxLayout) AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben