T
Tahomar
Gast
Hallo,
ich verzweifle gerade an einem, wie ich dachte simplen Problem. Ich wollte zwei Buttons mit Funktionalität ausstatten, beim Hilfe-Button soll sich bspw. eine Textarea öffnen. Aber ich krieg das einfach mit dem ActionListener nicht auf die Kette. Hab schon Literatur, google, usw. bemüht aber ich habe da scheinbar ne Blockade. Kann mir bitte jemand helfen?
Vielen Dank schon mal!
Hier mein Code, der eigentlich lauffähig ist wenn man die Listener Geschichte und die Methode ganz unten wieder auskommentiert:
ich verzweifle gerade an einem, wie ich dachte simplen Problem. Ich wollte zwei Buttons mit Funktionalität ausstatten, beim Hilfe-Button soll sich bspw. eine Textarea öffnen. Aber ich krieg das einfach mit dem ActionListener nicht auf die Kette. Hab schon Literatur, google, usw. bemüht aber ich habe da scheinbar ne Blockade. Kann mir bitte jemand helfen?
Vielen Dank schon mal!
Hier mein Code, der eigentlich lauffähig ist wenn man die Listener Geschichte und die Methode ganz unten wieder auskommentiert:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class SocketClient
{
static String d,f,g;
public static void main(String[] args) throws Exception
{
JFrame anwendungsFenster = new JFrame("Rechenanfrage an Server");
JTextField ersterOperand = new JTextField("0", 10);
JTextField operationsSchalter = new JTextField("+", 1);
JTextField zweiterOperand = new JTextField("0", 10);
JTextField ergebnis = new JTextField("0", 20);
JButton hilfe = new JButton("Hilfe");
JButton eingabe = new JButton("Eingabe beginnen");
ergebnis.setEditable(false);
JLabel label = new JLabel("Statusfenster", SwingConstants.LEADING);
JPanel textfeldPanel = new JPanel();
textfeldPanel.setLayout(new GridLayout(3, 1));
textfeldPanel.add(ersterOperand);
textfeldPanel.add(zweiterOperand);
textfeldPanel.add(ergebnis);
anwendungsFenster.getContentPane().setLayout(new GridLayout(1, 2));
anwendungsFenster.getContentPane().add(label);
anwendungsFenster.getContentPane().add(operationsSchalter);
anwendungsFenster.getContentPane().add(textfeldPanel);
anwendungsFenster.getContentPane().add(hilfe);
anwendungsFenster.getContentPane().add(eingabe);
// HIER WIRDS PROBLEMATISCH
hilfe.addActionListener(listener);
eingabe.addActionListener(listener);
// ***
anwendungsFenster.getContentPane().setLayout( new FlowLayout());
anwendungsFenster.pack();
anwendungsFenster.show();
try
{
String s = JOptionPane.showInputDialog
( "Bitte ersten Operanden eingeben" );
double i = Double.parseDouble( s );
d=(new Double(i)).toString();
s = JOptionPane.showInputDialog
( "Bitte den Operator, also + , - , * oder : eingeben" );
if ( s != null && s.length() > 0 )
{
char c = s.charAt( 0 );
f=(new Character(c)).toString();
}
s = JOptionPane.showInputDialog
( "Bitte zweiten Operanden eingeben" );
double o = Double.parseDouble( s );
g=(new Double(o)).toString();
}
catch(Exception ex)
{
System.out.println("Eingabefehler");
System.exit(1);
}
ersterOperand.setText(d);
zweiterOperand.setText(g);
operationsSchalter.setText(f);
anwendungsFenster.show();
// Socket-Verbindung auf den Port 1234 des Servers anfragen
Socket server= new Socket("localhost", 1234);
// Datenströme öffnen
DataInputStream in = new DataInputStream(server.getInputStream());
DataOutputStream out = new DataOutputStream (server.getOutputStream());
// Beide Argumente als Intergerzahlen an den Server senden
double zahl1 = Double.parseDouble(d);
double zahl2 = Double.parseDouble(g);
char op = f.charAt( 0 );
out.writeDouble(zahl1);
out.writeDouble(zahl2);
out.write(op);
// Ergebnis von Server einlesen und ausgeben
double resultat= in.readDouble();
String h=(new Double(resultat)).toString();
ergebnis.setText(h);
anwendungsFenster.show();
// Socketverbindungzu Server schliessen
server.close();
}
// UND HIER KLAPPTS AUCH NICHT
public void actionPerformed (ActionEvent e) {
if (e.getSource() == hilfe) {
JTextArea Hilfetext= new JTextArea("bla");
getContentPane().add(Hilfetext);
}
if (e.getSource() == eingabe) {
}
}
}