GUI Verknüpfungsproblem

lufon

Mitglied
Hallo zusammen !
Ich bin ganz neu hier und ebenfalls recht neu in der Java Programmierung.
Ich wollte zum Einstieg und zum üben ein kleines Programm schreiben mit einer simplen GUI, die einen JButton,ein JTextField und ein JTextArea hat.
Die GUI wird auch angezeigt, allerdings bei der Verknüpfung treten Probleme auf bzw. wenn ich das Progi starte, wird die GUI angezeigt, sobald ich aber den Button drücke, funktioniert es nicht.

Ich habe, um mich besser "orientieren" zu können und evtl. einen Fehler zu finden, ein gleiches, aber kleineres Skript geschrieben....das auch funktioniert.Darum verwirrt es mich umsomehr, das das Hauptskript einen Fehler ausgibt.



Zum Programmieren braucht ich BlueJ.

Das Skript :

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


import java.awt.*; 

public class Fenster extends JFrame implements ActionListener
{

  
   JButton Button1;
   JTextField TextFeld;
   JTextArea TextAnzeige;
   JTextField chf;
   JTextArea euro;
   JPanel btpanel;
   int Text;
   
public Fenster() { 

   

   TextAnzeige = new JTextArea(1,8);
   TextAnzeige.setEditable(false);
   
   JTextField TextFeld = new JTextField(8);
 //_____________________________________
   Button1 = new JButton("Berechnen");
   
   //_________________________
   btpanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
   btpanel.add(TextFeld);
   btpanel.add(Button1);
   btpanel.add(TextAnzeige);
   
   
   getContentPane().add(btpanel);
   
   Button1.addActionListener(this);
   
 
   
}



public void actionPerformed(ActionEvent e) {

if (e.getSource() == Button1) {

String Text2 = TextFeld.getText();

TextAnzeige.setText(Text2);

}
}

public static void main(String[] args){
Fenster b = new Fenster();
b.setLocation(300,300);
b.setSize(300,300);
b.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
b.setVisible(true);
b.pack();
}

}

Oder hab ich einfach nur einen ganz blöden Fehler übersehen ?

Mit freundlichen Grüssen

lufon
 

diel2001

Bekanntes Mitglied
Das ändern
Java:
JTextField TextFeld = new JTextField(8);
auf
Java:
TextFeld = new JTextField(8);

Schon bekommst du keine NullpointerException mehr :)
 
Q

Qualle1234

Gast
Hi, ich bin auch ein Java-Neuling;)
Die Mehoden
Java:
setText()
und
Java:
 getText()
sind aus der Klasse/ dem Interface Actionlistener oder?. Ich kann nämlich nirgends diese Methoden finden.

Grüße
 

Fab1

Top Contributor
Das Inferface ActionListener beinhaltet nur die Methode actionPerformed()

Die Methoden getText und setText von JTextField werden von dieser Mutterklasse vererbt.
 

lufon

Mitglied
Hallo nochmals

Das Programm sollte eig. ein Währungsrechner von CHF nach EURO werden.
Aber da braucht man ja zahlen.

1: (Text2 wurde als Integer definiert)
Java:
public void actionPerformed(ActionEvent e) {

if (e.getSource() == Button1) {

Text2 = Integer.parseInt(TextFeld.getText());

}
}

Wenn ich das nun mit System.out.println ausgeben will, funktioniert das irgendwie nicht.
Ich habe es schon mit einer try-funktion versucht, was allerdings auch nicht funktioniert hat.

2:(TeextAnzeige steht für eine TextArea)
Java:
TextAnzeige.setText(Text2);

Das funktioniert logischerweise nicht, das es ja setTEXT heisst, er also meint, das Text2 ein String ist.
Wie kann man das verändern ???
 

Fab1

Top Contributor
Wenn du Text2 als
Code:
Integer
definiert hast, dann kannst du mit

Java:
TextAnzeige.setText(Text2.toString());

Den String setzen. Aber Achtung
Code:
Integer
als Wrapperklasse.


Außerdem ist es zu empfehlen Variablen klein zu schreiben.
 

lufon

Mitglied
okay, ich habe etwas zum konvetieren noch im internet gefunden.

"Beispiele für die Wandlung von String -> Ordinaltyp:

String s = "10";
int i = Integer.parseInt( s );
float f = Float.parseFloat( s );"

(Beispiel aus einem Wiki)


Java:
public void actionPerformed(ActionEvent e) {

if (e.getSource() == Button1) {

//angenommen text2 = "5"
String text2 = TextFeld.getText();

//hier wirds zu einem integer gemacht, also einfach 5.
int text3 = Integer.parseInt(text2);

//hier wird text3 wieder zu einem string gemacht, also "5"

TextAnzeige.setText(Integer.toString(text3));


}
}

edit2 :ich habe ein kleines script geschrieben, das ähnlich ist.

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

public class Global {



public static void main(String[] args){
String text;
text = "1234";


String text2 = text;

int text3 = Integer.parseInt(text2);


System.out.println(Integer.toString(text3));


}
}
das funktioniert auch.also muss es an was anderem liegen ???:L
 
Zuletzt bearbeitet:

lufon

Mitglied
also indemfall poste ich mal das ganze script.

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







public class Fenster extends JFrame implements ActionListener
{

  
   JButton Button1;
   JTextField TextFeld;
   JTextArea TextAnzeige;
   JTextField chf;
   JTextArea euro;
   JPanel btpanel;

   
   
public Fenster() { 
super("blabla");   
setLocation(300,300);
setSize(300,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


   TextAnzeige = new JTextArea(1,8);
   TextAnzeige.setEditable(false);
   
   JTextField TextFeld = new JTextField(8);
 //_____________________________________
   Button1 = new JButton("Berechnen");
   
   //_________________________
   btpanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
   btpanel.add(TextFeld);
   btpanel.add(Button1);
   btpanel.add(TextAnzeige);
   
   
   getContentPane().add(btpanel);
   
   Button1.addActionListener(this);
   
setVisible(true);
pack();
   
}

public void actionPerformed(ActionEvent e) {

if (e.getSource() == Button1) {


String text2 = TextFeld.getText();

int text3 = Integer.parseInt(""+text2);


TextAnzeige.setText(Integer.toString(text3));


}
}


public static void main(String[] args){
Fenster b = new Fenster();

}



}

ich kann es selbst auch nicht sagen.
das script hat keine syntax errors.
aber hier mal was passiert, wenn ich z.B ne 5 eingebe und den button klicke.


Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Fenster.actionPerformed(Fenster.java:59)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
 
Zuletzt bearbeitet:
V

vanny

Gast
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
public class Fenster extends JFrame implements ActionListener
{
 
  
   JButton Button1;
   JTextField TextFeld;
   JTextArea TextAnzeige;
   JTextField chf;
   JTextArea euro;
   JPanel btpanel;
 
   
   
public Fenster() { 
super("blabla");   
setLocation(300,300);
setSize(300,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
   TextAnzeige = new JTextArea(1,8);
   TextAnzeige.setEditable(false);
   TextFeld = new JTextField(8);//HIER WAR DEIN FEHLER
   
   
 //_____________________________________
   Button1 = new JButton("Berechnen");
   
   //_________________________
   btpanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
   btpanel.add(TextFeld);
   btpanel.add(Button1);
   btpanel.add(TextAnzeige);
   
   
   getContentPane().add(btpanel);
   
   Button1.addActionListener(this);
   
setVisible(true);
pack();
   
}
 
public void actionPerformed(ActionEvent e) {
 
if (e.getSource() == Button1) {
 
String text2 = TextFeld.getText();
 
int text3 = Integer.parseInt(""+text2);
 
TextAnzeige.setText(Integer.toString(text3));
 
}
}
 
public static void main(String[] args){
Fenster b = new Fenster();
 
}
 
}
 

lufon

Mitglied
oh mein gott, das ist jetzt peinlich :eek:
ich dachte, ich hätte das rausgenommen ?
hab wahrscheinlich ein paarmal zuviel undo gedrückt :)
(oben hat diel2001 den fehler schon gepostet)

vielen dank !
 

Oben