Das Ausgabeproblem

Noel

Mitglied
Hallo zusammen,

ich bin neu hier, da ich eben auch erst seit 3 Tagen - zwecks mienes Studiums - mit Java angefangen habe.
Ich habe folgendes Problem:
Ich habe mit GUIs angefangen und eigentlich klappt auch alles ziemlcih gut bis es zur "Ausgabe" kommt, vorranig wenn ich einen Button auf meinem GUI druecke.


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

public class EinfacheGui1 implements ActionListener {
	JButton button;

	public static void main(String[] args) {

		EinfacheGui1 gui = new EinfacheGui1();
		gui.los();
	}

	public void los() {

		JFrame frame = new JFrame();
		JButton button = new JButton("klickt");

		button.addActionListener(this);

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().add(button);
		frame.setSize(300, 300);
		frame.setVisible(true);
	}

	public void actionPerformed(ActionEvent event) {
		button.setText("Anyway...");

	}

}

dann passiert nämlich gar nichts, außer ne Menge fehler in der Console.
-->Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at EinfacheGui1.actionPerformed(EinfacheGui1.java:27)
....

Und das 2. Problem ist bei einem ChatGui.
Wenn ich auf "senden" klicke, so sollte der Text unten, oben im Fenster stehen.


2.
Java:
import javax.swing.JFrame;


class frame extends JFrame {

	frame() {
		setLocation(100,100);
		setSize(800,600);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}
	
}

import java.awt.event.*;

class Action implements ActionListener {
	Print History;

	Action() {
		History = new Print();

	}

	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().equals("send")) {
			History.Speichere(Gui.getEingabe());
		}
	}

}

class Print {
	String anzeigeText = "";

	void Speichere(String in) {
		anzeigeText += in + "\n";
		Gui.setText(anzeigeText);

	}

	String Lade() {
		return anzeigeText;
	}

}

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.TextArea;

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

public class Gui {

	static TextArea text;
	static TextArea input;

	public static void main(String[] args) {

				Runnable startGui = new Runnable() {

					@Override
					public void run() {
						JFrame Fenster = new JFrame("ChatfensterVersuch");
						Action listener = new Action();
						
						Fenster.setVisible(true);
						Fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
						Fenster.setLayout(new BorderLayout());

						Container unten = new Container();
						unten.setLayout(new BorderLayout());

						JButton senden = new JButton("senden");
						senden.addActionListener(listener);
						senden.setActionCommand("send");
						
						TextArea text = new TextArea("Hi du");
						TextArea input = new TextArea("Hi");

						unten.add(input, BorderLayout.CENTER);
						unten.add(senden, BorderLayout.EAST);

						Fenster.add(text, BorderLayout.CENTER);
						Fenster.add(unten, BorderLayout.SOUTH);
						
					}
					
				};
				

				
				EventQueue.invokeLater(startGui);
			
	}

	
	static void setText(String in) {
		text.setText(in);
	}

	
		static String getEingabe() {
			return input.getText();
		}
	
}

Ich hatte die Vermutung, dass es etwas mit dem event dispatch thread zu tun hat, aber wie gesagt ich beschäftige mich erst 3 Tage mit Java und denke das es eventuell meine derzeitigen Kentnisse übersteigt.

Ich hoffe ihr könnt mir helfen, die Probleme zu verstehen damit ich weiterkomme.

lg
 

XHelp

Top Contributor
[JAVA=16]
JButton button = new JButton("klickt");
[/code]
Mach hier "JButton" weg, dann sollte es funktioniert. So deklarierst du ja eine Methodenvariable "button" und deine Instanzvariable "button" bleibt null.

2. Problem:
Anstatt:
[JAVA=36]
void Speichere(String in) {
anzeigeText += in + "\n";
Gui.setText(anzeigeText);
}
[/code]
kannst du ja auch:
[JAVA=37]
anzeigeText = in + "\n" + anzeigeText;
[/code]
machen.
 

Noel

Mitglied
Danke für die schnelle Antwort.
Ja tatsächlich, das 1 Problem war blöd, habe das übersehen.


Beim 2. hab ich das geändert, aber wirklich was passiert ist nicht.

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Gui.getEingabe(Gui.java:60)
at Action.actionPerformed(Action.java:13)

Diese beiden Dinge scheinen immer noch falsch zu laufen.
 

XHelp

Top Contributor
Jetzt habe ich mir das genauer angeguckt: das gleiche Problem, du Initialisierst eine andere
Code:
text
variable. Genau wie input.
 

Ähnliche Java Themen

Neue Themen


Oben