ActionListener bei Button?

Status
Nicht offen für weitere Antworten.
S

Sören

Gast
Hallo, programmiere heute zum ersten mal so 'ne GUI in Java.
Wie mache ich das, dass beim Klick auf den Button "jbutton1" etwas passiert?

Mein Code, aber der geht nicht:
Code:
import Network.Network;
import Network.NetworkListener;
import Password.Password;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.*;
import java.util.StringTokenizer;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class FirstGUI extends JFrame

{
   private JButton button;
   private JPanel panel;
    Network network;
    private String nickname;
    private String passwort;
    private String channel;

   private FirstGUI()
   {
       super("StayOnline by MacPri");
       setSize(400,150);
       setLocation(300,230);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setLayout(new BorderLayout(5,5));
string nickname;
string passwort;
string channel;
        nickname = "";
        passwort = "";
        channel = "";

       panel = new JPanel(new GridLayout(5,2));
        final JTextField nickField = new JTextField();
        final JPasswordField passField = new JPasswordField();
        final JTextField channelField = new JTextField();
        JButton jbutton1 = new JButton("StayOnline!");
    

       panel.add(new JLabel(" Nickname:"));
        panel.add(nickField);

        panel.add(new JLabel(" Passwort:"));
        panel.add(passField);

        panel.add(new JLabel(" Channel:"));
        panel.add(channelField);

panel.add(new JLabel(" "));
panel.add(jbutton1);

       getContentPane().add(panel);


       setVisible(true);
   }


jbutton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
nickname = nickField.getText();
                    passwort = new String(passField.getPassword());
                    channel = channelField.getText();
       network = new Network(this);
}
});




   public static void main(String[] args)
   {
        FirstGUI g = new FirstGUI();
   }
}
 

foobar

Top Contributor
Du hast falsch geklammert:
Code:
import Network.Network;
import Network.NetworkListener;
import Password.Password;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class FirstGUI extends JFrame

{
   private JButton button;
   private JPanel panel;
    // Network network;
    private String nickname;
    private String passwort;
    private String channel;

   private FirstGUI()
   {
       super("StayOnline by MacPri");
       setSize(400,150);
       setLocation(300,230);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setLayout(new BorderLayout(5,5));
        nickname = "";
        passwort = "";
        channel = "";

        panel = new JPanel(new GridLayout(5,2));
        final JTextField nickField = new JTextField();
        final JPasswordField passField = new JPasswordField();
        final JTextField channelField = new JTextField();
        JButton jbutton1 = new JButton("StayOnline!");
        jbutton1.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent e) 
            {
                nickname = nickField.getText();
                            passwort = new String(passField.getPassword());
                            channel = channelField.getText();
               network = new Network(this);
            }
        });


        panel.add(new JLabel(" Nickname:"));
        panel.add(nickField);

        panel.add(new JLabel(" Passwort:"));
        panel.add(passField);

        panel.add(new JLabel(" Channel:"));
        panel.add(channelField);

        panel.add(new JLabel(" "));
        panel.add(jbutton1);

       getContentPane().add(panel);
       setVisible(true);
   }


   public static void main(String[] args)
   {
        new FirstGUI();
   }
}

Ausserdem hast du die Member durch lokale Variablen überschrieben.
 
S

Sören

Gast
Danke, klappt soweit ganz gut.
Aber das Aufrufen der Network.class mit network = new Network(this) macht noch Probleme.

Der Code der Network.class:
Code:
package Network;

import java.io.*;
import java.net.Socket;

// Referenced classes of package Network:
//            NetworkListener, J, F

public class Network
    implements Runnable
{

    BufferedReader breader;
    OutputStream outStream;
    InputStream is;
    PrintWriter pwriter;
    J code;
    NetworkListener nl;
    public boolean connected;
    boolean verbose;
    F f;

    public void disconnect()
    {
        try
        {
            connected = false;
            nl.connectionLost(this);
            outStream.close();
            is.close();
        }
        catch(Exception exception) { }
    }

    public void setVerbose(boolean b)
    {
        verbose = b;
    }

    public Network(NetworkListener nl)
    {
        code = new J();
        connected = false;
        verbose = true;
        f = new F();
        this.nl = nl;
        try
        {
            Socket socket = new Socket("h-213.61.5.150.host.de.colt.net", 2710);
            is = socket.getInputStream();
            outStream = socket.getOutputStream();
            (new Thread(this)).start();
            sendString("t\000V8.6\000 \0000", 1);
            connected = true;
        }
        catch(Exception e)
        {
            e.printStackTrace();
            connected = false;
            nl.connectionLost(this);
        }
    }

    public void run()
    {
        while(connected) 
        {
            String s1 = f.I(destroy(is));
            System.out.println(s1);
            nl.stringRecieved(this, s1);
        }
    }

    private byte[] destroy(InputStream inputstream)
    {
        try
        {
            int i;
            while(i > 0x19000) 
            {
                i = 0;
                byte abyte0[] = new byte[5];
                abyte0[0] = (byte)inputstream.read();
                if(abyte0[0] >= 0)
                {
                    i = abyte0[0] + 1;
                } else
                {
                    i = (abyte0[0] & 0x1f) + 1;
                    int j = ((abyte0[0] & 0x60) >>> 5) + 1;
                    for(int k = 1; k < j; k++)
                    {
                        i += inputstream.read() << (k - 1) * 8 + 5;
                    }

                }
            }
            byte abyte1[] = new byte[i];
            for(; i > 0; i--)
            {
                abyte1[abyte1.length - i] = (byte)inputstream.read();
            }

            return abyte1;
        }
        catch(Throwable t)
        {
            connected = false;
        }
        nl.connectionLost(this);
        return new byte[2];
    }

    public void sendString(String string, int i)
    {
        if(verbose)
        {
            nl.stringSend(this, string);
        }
        try
        {
            byte abyte0[] = code.I(string);
            byte abyte1[] = currentTimeMillis(abyte0.length);
            byte abyte2[] = new byte[abyte1.length + abyte0.length + i];
            System.arraycopy(abyte1, 0, abyte2, i, abyte1.length);
            System.arraycopy(abyte0, 0, abyte2, abyte1.length + i, abyte0.length);
            outStream.write(abyte2);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

    private byte[] currentTimeMillis(int i)
        throws IOException
    {
        if(i > 0x19000)
        {
            throw new IOException("Too long Msg: " + i);
        }
        byte abyte0[] = (byte[])null;
        if(--i >= 0)
        {
            if(i < 128)
            {
                abyte0 = new byte[1];
                abyte0[0] = (byte)i;
            } else
            {
                byte byte0;
                for(byte0 = 0; 32 << (byte0 + 1) * 8 <= i; byte0++) { }
                abyte0 = new byte[byte0 + 2];
                abyte0[0] = (byte)(byte0++ << 5 | 0x80 | i & 0x1f);
                for(int j = 1; j < abyte0.length; j++)
                {
                    abyte0[j] = (byte)(i >>> 8 * (j - 1) + 5);
                }

            }
        }
        return abyte0;
    }
}

P.S: Die FirstGUI.java liegt im Verzeichnis /, die Network.class im Verzeichnis Network/[/code]
 

André Uhres

Top Contributor
Code:
//                network = new Network(this); //this ist kein NetworkListener
                network = new Network(new NetworkListener());  
                new Thread(network).start();
 

foobar

Top Contributor
Es würde dann aber mehr Sinn machen wenn die GUI-Klasse den Networklistener implementieren würde, damit die GUI Klasse auch auf die Callbacks reagieren kann. Oder du speicherst den Networklistener in einem Member und reagierst dann auf die Events.
 
S

Sören

Gast
So, jetzt meldet mir der Compiler aber noch: "Network.NetworkListener is abstract, cannot be instantiated".

FirstGUI.java:
Code:
import Network.Network;
import Network.NetworkListener;
import Password.Password;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class FirstGUI extends JFrame
{
   private JButton button;
   private JPanel panel;
    Network network;
    private String nickname;
    private String passwort;
    private String channel;

   private FirstGUI()
   {
       super("StayOnline by MacPri");
       setSize(400,150);
       setLocation(300,230);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setLayout(new BorderLayout(5,5));
        nickname = "";
        passwort = "";
        channel = "";

        panel = new JPanel(new GridLayout(5,2));
        final JTextField nickField = new JTextField();
        final JPasswordField passField = new JPasswordField();
        final JTextField channelField = new JTextField();
        JButton jbutton1 = new JButton("StayOnline!");
        jbutton1.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {

                nickname = nickField.getText();
                            passwort = new String(passField.getPassword());
                            channel = channelField.getText();
                network = new Network(new NetworkListener()); 
                new Thread(network).start();
            }
        });


        panel.add(new JLabel(" Nickname:"));
        panel.add(nickField);

        panel.add(new JLabel(" Passwort:"));
        panel.add(passField);

        panel.add(new JLabel(" Channel:"));
        panel.add(channelField);

        panel.add(new JLabel(" "));
        panel.add(jbutton1);

       getContentPane().add(panel);
       setVisible(true);
   }


   public static void main(String[] args)
   {
        new FirstGUI();
   }
}
 
S

Sören

Gast
NetworkListener.java:
Code:
package Network;


// Referenced classes of package Network:
//            Network

public interface NetworkListener
{

    public abstract void stringRecieved(Network network, String s);

    public abstract void connectionLost(Network network);

    public abstract void stringSend(Network network, String s);
}
 

foobar

Top Contributor
So, jetzt meldet mir der Compiler aber noch: "Network.NetworkListener is abstract, cannot be instantiated".
Deshalb habe ich dir ja geraten den NetworkListener von deiner GUI implementieren zu lassen. Ansonsten funktionieren die Callbacks nicht bzw. machen keinen Sinn.
 
S

Sören

Gast
foobar: Ja, bloß ich kenn mich noch nicht soo gut mit Java aus und weiß nicht wie das geht :)
'ne kleine Erklärung für den Aha-Effekt wäre auch nicht schlecht :)
 

foobar

Top Contributor
Code:
import Network.Network;
import Network.NetworkListener;
import Password.Password;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class FirstGUI extends JFrame implements NetworkListener
{
   private JButton button;
   private JPanel panel;
    Network network;
    private String nickname;
    private String passwort;
    private String channel;

   private FirstGUI()
   {
       super("StayOnline by MacPri");
       setSize(400,150);
       setLocation(300,230);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setLayout(new BorderLayout(5,5));
        nickname = "";
        passwort = "";
        channel = "";

        panel = new JPanel(new GridLayout(5,2));
        final JTextField nickField = new JTextField();
        final JPasswordField passField = new JPasswordField();
        final JTextField channelField = new JTextField();
        JButton jbutton1 = new JButton("StayOnline!");
        jbutton1.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {

                nickname = nickField.getText();
                            passwort = new String(passField.getPassword());
                            channel = channelField.getText();
                network = new Network(new NetworkListener());
                new Thread(network).start();
            }
        });


        panel.add(new JLabel(" Nickname:"));
        panel.add(nickField);

        panel.add(new JLabel(" Passwort:"));
        panel.add(passField);

        panel.add(new JLabel(" Channel:"));
        panel.add(channelField);

        panel.add(new JLabel(" "));
        panel.add(jbutton1);

       getContentPane().add(panel);
       setVisible(true);
   }

  public void stringRecieved(Network network, String s)
  {
  }

    public void connectionLost(Network network)
   {
   }

    public void stringSend(Network network, String s)
   {
   } 

   public static void main(String[] args)
   {
        new FirstGUI();
   }
}

Jetzt mußt du nur noch die leeren Methoden mit Logik füllen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Button's mit versch. Aufgaben/ActionListener Java Basics - Anfänger-Themen 12
M Button , actionlistener Java Basics - Anfänger-Themen 11
D ActionListener braucht zwei Klicks auf Button??? Java Basics - Anfänger-Themen 2
M JTree und ein Button mit ActionListener Java Basics - Anfänger-Themen 3
D ActionListener: welcher Button wurde geklickt Java Basics - Anfänger-Themen 7
G Müssen ActionListener + sein Button in einer Klasse liegen? Java Basics - Anfänger-Themen 11
S Button ActionListener Java Basics - Anfänger-Themen 3
E ActionListener Java Basics - Anfänger-Themen 4
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
C JButton reagiert nicht auf actionListener Java Basics - Anfänger-Themen 15
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
J Array Actionlistener Java Basics - Anfänger-Themen 9
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
P Erste Schritte ActionListener Java Basics - Anfänger-Themen 2
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
J Erste Schritte Actionlistener für tbar/ JButton Java Basics - Anfänger-Themen 15
krgewb ActionListener Java Basics - Anfänger-Themen 1
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
F ActionListener mit Files etc Java Basics - Anfänger-Themen 12
N Probleme mit dem ActionListener Java Basics - Anfänger-Themen 4
CptK Auf ActionListener von anderer Klass aus zugreifen Java Basics - Anfänger-Themen 5
F Mehrere Buttons mit einem ActionListener abdecken Java Basics - Anfänger-Themen 24
U ActionListener mit JMenuItems verknüpfen Java Basics - Anfänger-Themen 1
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
L Problem bei Java-ActionListener Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
D Einen Wert unter einen ActionListener weitergeben Java Basics - Anfänger-Themen 1
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
JavaNewbie2.0 ActionListener Java Basics - Anfänger-Themen 11
Voreck Actionlistener problem Java Basics - Anfänger-Themen 1
G Im ActionListener eine "äußere" Variable verändern Java Basics - Anfänger-Themen 13
T Fehler beim ActionListener Java Basics - Anfänger-Themen 2
M public static int in ActionListener Java Basics - Anfänger-Themen 6
S actionlistener timer Java Basics - Anfänger-Themen 9
J Interface ActionListener in eigener Klasse Java Basics - Anfänger-Themen 27
P aus ActionListener auf HauptFrame zugreifen Java Basics - Anfänger-Themen 4
A Klassen Bool Actionlistener Java Basics - Anfänger-Themen 2
K Methoden ActionListener wird übersprungen Java Basics - Anfänger-Themen 3
S actionlistener Java Basics - Anfänger-Themen 29
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
J ActionListener Java Basics - Anfänger-Themen 5
A ActionListener Java Basics - Anfänger-Themen 9
R Problem mit ActionListener für Buttons Java Basics - Anfänger-Themen 5
Z ActionListener wird nicht erkannt? Java Basics - Anfänger-Themen 5
T ActionListener Source vergleichen Java Basics - Anfänger-Themen 8
T Frage zum ActionListener Java Basics - Anfänger-Themen 5
R ActionListener mit for Schleife füllen. Java Basics - Anfänger-Themen 4
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
I ActionListener reagiert nicht Java Basics - Anfänger-Themen 6
N Probleme mit ActionListener und Logischer Abfrage Java Basics - Anfänger-Themen 4
D Erste Schritte Buttons mit actionlistener Problem Java Basics - Anfänger-Themen 3
S JButton mit ActionListener Java Basics - Anfänger-Themen 5
S ActionListener, Methoden und Variablen Java Basics - Anfänger-Themen 4
X Variablen Actionlistener | Variablen-namen Java Basics - Anfänger-Themen 5
G ActionListener implementieren Java Basics - Anfänger-Themen 12
T Erste Schritte Berechnete Variable im ActionListener zurückführen Java Basics - Anfänger-Themen 6
D Panel sichtbar/unsichtbar machen im ActionListener Java Basics - Anfänger-Themen 3
U JFrame durch ActionListener erweitern Java Basics - Anfänger-Themen 4
P Erste Schritte JTable mit Daten aus Acces DB füllen und Actionlistener einsetzen Java Basics - Anfänger-Themen 29
M Actionlistener Java Basics - Anfänger-Themen 9
D Problem mit ausgelagertem Actionlistener Java Basics - Anfänger-Themen 4
D KeyListener und ActionListener Problem Java Basics - Anfänger-Themen 6
M Klassen Durch den ActionListener das GUI einer anderen Klasse verändern Java Basics - Anfänger-Themen 8
T NullPointerException im ActionListener Java Basics - Anfänger-Themen 3
C Erste Schritte GUI - ActionListener - Exception Nullpointer Java Basics - Anfänger-Themen 5
Kenan89 ActionListener in eigene Klasse Java Basics - Anfänger-Themen 8
E JMenu ActionListener reagiert nicht? Java Basics - Anfänger-Themen 6
V ActionListener in einer for-Schleife Java Basics - Anfänger-Themen 2
S Erste Schritte ActionListener auf Buttons einrichten Java Basics - Anfänger-Themen 3
M Variablen Variable lässt sich durch ActionListener nicht ändern Java Basics - Anfänger-Themen 5
P ActionListener Action Event Java Basics - Anfänger-Themen 5
L ActionListener zerschießt AnchorLayout Java Basics - Anfänger-Themen 8
M Methoden Timer in ActionListener aufrufen Java Basics - Anfänger-Themen 2
Y Actionlistener passt nicht zu Dataset Java Basics - Anfänger-Themen 6
W Problem mit FileWriter / ActionListener Java Basics - Anfänger-Themen 6
F actionListener Java Basics - Anfänger-Themen 3
T ActionListener auslagern Java Basics - Anfänger-Themen 14
S Actionlistener funktionieren nicht in der .jar Java Basics - Anfänger-Themen 9
E ActionListener abwarten lassen? Java Basics - Anfänger-Themen 11
E ActionListener in anderer Klasse erkennen Java Basics - Anfänger-Themen 13
H ActionListener Verbesserung möglich? (This) Java Basics - Anfänger-Themen 3
E ActionListener erkennt instanz nicht Java Basics - Anfänger-Themen 9
V ActionListener bei vielen Modulen Java Basics - Anfänger-Themen 3
J ActionListener Java Basics - Anfänger-Themen 2
T JLabel durch ActionListener ändern Java Basics - Anfänger-Themen 4
S ActionListener Java Basics - Anfänger-Themen 4
U actionListener - eine Kleine Frage Java Basics - Anfänger-Themen 7
K Actionlistener Java Basics - Anfänger-Themen 7
M ActionListener außerhalb des EDT ausführen Java Basics - Anfänger-Themen 2
A ActionListener im JMenu - Problem Java Basics - Anfänger-Themen 2
M ActionListener reagiert nicht Java Basics - Anfänger-Themen 4
N ActionListener + GUI Java Basics - Anfänger-Themen 8
H Bewegtes Bild im ActionListener [Problem] Java Basics - Anfänger-Themen 12
D Liste+ActionListener Java Basics - Anfänger-Themen 6
L wie Jframe an ActionListener übergeben Java Basics - Anfänger-Themen 4
U ActionListener und KeyListener - KeyListener funktioniert nicht Java Basics - Anfänger-Themen 2
A JButton ActionListener nach einmaligem Ausführen zurücksetzen Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben