Problem mit weitergabe(actionlistener)

08/23/2016 21:45 DjBgNr.1#1
Guten abend zusammen,
ich komme einfach nicht auf die Lösung...

Durch "connect.setArtikelnummer(Fenster.string);" soll der wert an Artikelnummer weitergegeben werden.
Die Variable string wartet auf die Eingabe des Nutzers doch leider habe ich zwei Probleme:
1.Das programm läuft weiter und wartet nicht auf die eingabe des ActionListener um die Variable an "connect.setArtikelnummer(Fenster.string);" weiterzugeben (Ergebnis : NULL)
2.Ich schaffe es nicht das string in einen INT wert umgewandelt wird so das "connect.setArtikelnummer(Fenster.string);" damit arbeiten kann.

Ich danke für jede Hilfe ..
und ja ich bin neu .. vergibt mir meine Fehler :handsdown:
Code:
import java.sql.*;

public class DBConnect {
    private Connection con;
    private Statement st;
    private ResultSet rs;
    private int Artikelnummer;

    public void setArtikelnummer(int artnum) {
        this.Artikelnummer=artnum;
    }
    public int getArtikelnummer() {
        return Artikelnummer;
    }

    private String Artikel;
    private String Name;
    private String Preis;


    public DBConnect() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost:3311/ic", "root", "root");
            st = con.createStatement();
        }
        catch (Exception ex) {
            System.out.println("Error: " + ex);
        }
    }
    public void getData() {
        try {
            String query = "select * from TEST WHERE Artikel = '"+Artikelnummer+"'";
            rs = st.executeQuery(query);
            System.out.println("Records from Database");
            while (rs.next()) {
                String art = rs.getString("Artikel");
                String nam = rs.getString("Name");
                String price = rs.getString("Preis");
                System.out.println("Artikel:   " + art + "   Name:   " + nam + "Preis:    "+ price);
                art=Artikel;
                nam=Name;
                price=Preis;
            }
        } catch(Exception ex) {
            System.out.println(ex);
        }
    }

}
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Frame extends JFrame {
    private JTextField Artikel;
    public String string ="";
    public Frame()
    {
        super("Fenster Titel");
        setLayout(new FlowLayout());

        Artikel = new JTextField(10);
        add(Artikel);

        DerHandler handler = new DerHandler();

        Artikel.addActionListener(handler);


    }


        public class DerHandler implements ActionListener
    {

        public void actionPerformed(ActionEvent event)
        {
            //String sstring ="";
            if(event.getSource()==Artikel)
                string=String.format("%s",event.getActionCommand());
            //JOptionPane.showMessageDialog(null,string);
            System.out.println("Ergebnis durch eingabe im JTextField: "+string);

        }

    }


}
Code:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.event.*;

public class Rechner {




    public static void main(String[] args){
        DBConnect  connect = new DBConnect();
        connect.setArtikelnummer(179);
        connect.getData();

        // FRAME
        Frame Fenster = new Frame();
        Fenster.setVisible(true);
        Fenster.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        Fenster.setSize(400,200);

        //Command



        //DBWeitergabe
        System.out.println("Der Artikel hat in der DB Folgende Nummer: "+connect.getArtikelnummer());
        connect.setArtikelnummer(Fenster.string);


    }
}
[Only registered and activated users can see links. Click Here To Register...]
08/23/2016 22:11 .Scy#2
Um einen String in ein int zu verwandeln solltest du [Only registered and activated users can see links. Click Here To Register...] nutzen.

Da du keinen ActionCommand setzt, gibt es auch keinen ActionCommand. Du solltest schon auf den Text im JTextField eingehen, in deinem listener.

Code:
public void actionPerformed(ActionEvent event)
        {
            //String sstring ="";
            if(event.getSource()==Artikel)
                string= artikel.getText();
            //JOptionPane.showMessageDialog(null,string);
            System.out.println("Ergebnis durch eingabe im JTextField: "+string);

        }
Außerdem ist es eine Java-Konvention variablen klein zu schreiben, sprich artikel und nicht Artikel, da klassen groß geschrieben werden. Desweiteren gibt es bereits eine klasse namens Frame, weswegen der name verwirrend ist für andere die deinen code lesen, ein name wie MyFrame o.ä. wäre passender.
08/23/2016 22:16 DjBgNr.1#3
Okey , es geht darum das im JTextField die Eingabe an connect.setArtikelnummer(Fenster.string) weitergegeben soll.. Daraufhin soll dann der getData() mit der Artikelnummer in der DB den entsprechen Eintrag rausfiltern und per System.out.... mir ausgeben.
@[Only registered and activated users can see links. Click Here To Register...] dennoch danke für die kurze und schnelle Hilfe :)
08/23/2016 22:18 .Scy#4
Habe meine antwort nochmal bearbeitet, weil mir der fehler aufgefallen ist, den du gemacht hast.
08/23/2016 22:34 DjBgNr.1#5
Ist er nicht mit string=String.format("%s",event.getActionCommand() ); vorhanden?
Code:
        public void actionPerformed(ActionEvent event)
        {
            //String sstring ="";
            if(event.getSource()==Artikel)
                string=String.format("%s",event.getActionCommand());
            //JOptionPane.showMessageDialog(null,string);
            System.out.println("Ergebnis durch eingabe im JTextField: "+string);

        }
08/23/2016 22:42 .Scy#6
Quote:
Originally Posted by DjBgNr.1 View Post
Ist er nicht mit string=String.format("%s",event.getActionCommand() ); vorhanden?
Code:
        public void actionPerformed(ActionEvent event)
        {
            //String sstring ="";
            if(event.getSource()==Artikel)
                string=String.format("%s",event.getActionCommand());
            //JOptionPane.showMessageDialog(null,string);
            System.out.println("Ergebnis durch eingabe im JTextField: "+string);

        }
Du müsstest deinem JTextField ein ActionCommand geben. Sprich:
Code:
artikel.setActionCommand(artikel.getText()); //<-- würde aber nicht funktionieren, da nur der aller erste text gesetzt wird.
Du MUSST um den text zu übernehmen definitiv den text aus dem JTextField via getText() auslesen.
08/24/2016 00:05 DjBgNr.1#7
Soweit so gut .

jetzt bleibt nurnoch das Problem mit der Übergabe an eine Variable übrig. Sprich ich möchte nun i an Artikelnummer weitergeben damit es die abfrage in MySQL starten kann.

Code:
        jt.addActionListener(new ActionListener() {
            [MENTION=295804]Override[/MENTION]
            public void actionPerformed(ActionEvent e)
            {
                String input = jt.getText();
                int i = Integer.parseInt(jt.getText());
                System.out.println(i);
            }
        });
08/24/2016 00:11 .Scy#8
Code:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.event.*;

public class Rechner {




    public static void main(String[] args){
        DBConnect  connect = new DBConnect();
        connect.setArtikelnummer(179);
        connect.getData();

        // FRAME
        Frame fenster = new Frame();
        fenster.setVisible(true);
        fenster.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        fenster.setSize(400,200);

        //Command



        //DBWeitergabe
        System.out.println("Der Artikel hat in der DB Folgende Nummer: "+connect.getArtikelnummer());
        connect.setArtikelnummer(Integer.parseInt(fenster.string);
        connect.getData();

    }
}