Mit eigener Klasse auf GUI-Elemente zugreifen

Stapf_JAVA

Mitglied
Hallo. Bin JAVA Neuling. Soll für ein Industriepraktikum programmieren. Ziel. Verbindung zu einem Modem via Telnet. Verbindung klappt auch schon. Jetzt brauche ich Hilfe. Nutze Netbeans und hab eine DesktopApp erstellt.
Erzeuge in meinem View nach klick eines Buttons eine Instanz meiner TelnetSocket Klasse (Socket). In der möchte ich dann die Verbindung überprüfen und falls diese nicht funktioniert eine Fehlermeldung auf der GUI ausgeben. Die Überprüfung stimmt auch nur die Ausgabe über ein Label oder ein JTextField will mir nicht gelingen. Es kommt beim Ausführen zu keiner Fehlermeldung! Aber es wird eben nichts auf der GUI angezeigt. Woran liegt das?

meine Socketklasse:
Java:
package modemconfigtool;

import java.io.*; //einbinden für Socketklasse
import java.net.*;
//import java.awt.event.*;
//import java.awt.Robot;
//import java.lang.*;
//import java.awt.AWTException;
/*




/**
 *
 * @author Stapf
 */
public class TelnetSocket {
    public ModemconfigtoolView mainView;


    public boolean is_connected = false;

    public TelnetSocket ( ModemconfigtoolView view, String ipAddr, String user, String password)throws IOException  //Konstruktor
    {  //Verbindungsaufbau
        mainView = view;
        Socket echoSocket = null;      //Variablen vom Typ der Klasse anlegen
        PrintWriter out = null;
        BufferedReader in = null;
       // System.out.print("IP?:") ;
        //String IP = "192.168.2.101"; // VOM BEDIENER EINZUGEBEN

        try {
            echoSocket = new Socket(ipAddr , 23); // Zuweisungen
            out = new PrintWriter(echoSocket.getOutputStream(), true);
            in = new BufferedReader(new InputStreamReader(
                                        echoSocket.getInputStream()));
        } catch (UnknownHostException e) {
            System.err.println("Exiting. Don't know about host:" + ipAddr);
            System.exit(1);
        } catch (IOException e) {
            System.err.println("Exiting. Couldn't get I/O for the connection: "+ ipAddr+"\nChange IP Address ?");
            System.exit(1);
        }

	BufferedReader stdIn = new BufferedReader(
                                   new InputStreamReader(System.in));


        is_connected = true;

        String test = "test";
        String failed = "Login incorrect";
        String userInput;
    //    String consoleOutput;
       
         
             
        System.out.println("echo: " + in.readLine()); // Sequenzen vom Aufbau??

          //Login
        out.println(user);                              // Usernamen eingeben
        System.out.println("echo: " + in.readLine());   //Anzeige
        out.println(password);                          //Passwort eingeben
        System.out.println("echo: " + in.readLine());   //Anzeige



        String access;
        access = in.readLine();
        if (failed.compareTo(access)== 0){  //liefert 0 bei Übereinstimmung
        System.err.println("Login incorrect");}

        view.socket.mainView.getLoginIncorrect().setText(failed);
            

                              /*  //Simulation der ENTER-Taste
                                try{
                                         Robot robot = new Robot();
                                         robot.keyPress(KeyEvent.VK_ENTER); //oder 10
                                     }
                                catch (AWTException e){}
                                finally{
        

                             */

          

  
	while ((userInput = stdIn.readLine()) != null) {
	    out.println(userInput); //for (int zahl=1; zahl<=anzahl; zahl++){
            //while ((consoleOutput = in.readLine()) != null){
            System.out.println("echo: " + in.readLine());}
       //     } //Ende Else
        }//Ende Verbindungsaufbau
	


}//Ende Klasse

mein View:
Java:
package modemconfigtool;

import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.TaskMonitor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
import javax.swing.Icon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import java.io.*;
import java.net.*;
//import java.util.*;
import javax.swing.*;



/**
 * The application's main frame.
 */
public class ModemconfigtoolView extends FrameView {
    public TelnetSocket socket; //Socket deklarieren

    public ModemconfigtoolView(SingleFrameApplication app) {
        super(app);

        initComponents();

    }

    @Action
    public void showAboutBox() {
        if (aboutBox == null) {
            JFrame mainFrame = ModemconfigtoolApp.getApplication().getMainFrame();
            aboutBox = new ModemconfigtoolAboutBox(mainFrame);
            aboutBox.setLocationRelativeTo(mainFrame);
        }
        ModemconfigtoolApp.getApplication().show(aboutBox);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        mainPanel = new javax.swing.JPanel();
        Header = new javax.swing.JLabel();
        Mast_Clean = new javax.swing.JLabel();
        Redline = new javax.swing.JLabel();
        Modemkonfigurationstool_titel = new javax.swing.JLabel();
        IP_Adress = new javax.swing.JLabel();
        Username = new javax.swing.JLabel();
        Password = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();
        jTextField3 = new javax.swing.JTextField();
        Connection = new javax.swing.JButton();
        LoginIncorrect = new javax.swing.JLabel();
        Footer = new javax.swing.JLabel();

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(modemconfigtool.ModemconfigtoolApp.class).getContext().getResourceMap(ModemconfigtoolView.class);
        mainPanel.setBackground(resourceMap.getColor("mainPanel.background")); // NOI18N
        mainPanel.setMaximumSize(new java.awt.Dimension(988, 425));
        mainPanel.setMinimumSize(new java.awt.Dimension(988, 425));
        mainPanel.setName("mainPanel"); // NOI18N
        mainPanel.setPreferredSize(new java.awt.Dimension(988, 425));
        mainPanel.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        Header.setIcon(resourceMap.getIcon("Header.icon")); // NOI18N
        Header.setText(resourceMap.getString("Header.text")); // NOI18N
        Header.setName("Header"); // NOI18N
        mainPanel.add(Header, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, -1, -1));

        Mast_Clean.setIcon(resourceMap.getIcon("Mast_Clean.icon")); // NOI18N
        Mast_Clean.setText(resourceMap.getString("Mast_Clean.text")); // NOI18N
        Mast_Clean.setAlignmentY(0.0F);
        Mast_Clean.setName("Mast_Clean"); // NOI18N
        mainPanel.add(Mast_Clean, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 70, -1, -1));

        Redline.setIcon(resourceMap.getIcon("Redline.icon")); // NOI18N
        Redline.setText(resourceMap.getString("Redline.text")); // NOI18N
        Redline.setName("Redline"); // NOI18N
        mainPanel.add(Redline, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 220, -1, -1));

        Modemkonfigurationstool_titel.setFont(resourceMap.getFont("Modemkonfigurationstool_titel.font")); // NOI18N
        Modemkonfigurationstool_titel.setForeground(resourceMap.getColor("Modemkonfigurationstool_titel.foreground")); // NOI18N
        Modemkonfigurationstool_titel.setText(resourceMap.getString("Modemkonfigurationstool_titel.text")); // NOI18N
        Modemkonfigurationstool_titel.setName("Modemkonfigurationstool_titel"); // NOI18N
        mainPanel.add(Modemkonfigurationstool_titel, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 240, -1, -1));

        IP_Adress.setText(resourceMap.getString("IP_Adress.text")); // NOI18N
        IP_Adress.setName("IP_Adress"); // NOI18N
        mainPanel.add(IP_Adress, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 280, -1, -1));

        Username.setText(resourceMap.getString("Username.text")); // NOI18N
        Username.setName("Username"); // NOI18N
        mainPanel.add(Username, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 310, -1, -1));

        Password.setText(resourceMap.getString("Password.text")); // NOI18N
        Password.setName("Password"); // NOI18N
        mainPanel.add(Password, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 340, -1, 10));

        jTextField1.setText(resourceMap.getString("jTextField1.text")); // NOI18N
        jTextField1.setName("jTextField1"); // NOI18N
        mainPanel.add(jTextField1, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 280, 100, -1));

        jTextField2.setText(resourceMap.getString("jTextField2.text")); // NOI18N
        jTextField2.setName("jTextField2"); // NOI18N
        mainPanel.add(jTextField2, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 310, 100, -1));

        jTextField3.setText(resourceMap.getString("jTextField3.text")); // NOI18N
        jTextField3.setName("jTextField3"); // NOI18N
        mainPanel.add(jTextField3, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 340, 100, -1));

        Connection.setIcon(resourceMap.getIcon("Connection.icon")); // NOI18N
        Connection.setText(resourceMap.getString("Connection.text")); // NOI18N
        Connection.setName("Connection"); // NOI18N
        Connection.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ConnectionActionPerformed(evt);
            }
        });
        mainPanel.add(Connection, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 380, 140, -1));

        LoginIncorrect.setText(resourceMap.getString("LoginIncorrect.text")); // NOI18N
        LoginIncorrect.setName("LoginIncorrect"); // NOI18N
        mainPanel.add(LoginIncorrect, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 390, -1, -1));

        Footer.setIcon(resourceMap.getIcon("Footer.icon")); // NOI18N
        Footer.setText(resourceMap.getString("Footer.text")); // NOI18N
        Footer.setName("Footer"); // NOI18N
        mainPanel.add(Footer, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 416, -1, -1));

        setComponent(mainPanel);
    }// </editor-fold>

    private void ConnectionActionPerformed(java.awt.event.ActionEvent evt) {                                           

        try{
            socket = new TelnetSocket ( this, this.jTextField1.getText(), this.jTextField2.getText(), this.jTextField3.getText());
        }//End try
        catch(IOException e){
            System.out.println("Zugriffsfehler");
        }//End Catch
    }                                          

    // Variables declaration - do not modify
    public javax.swing.JButton Connection;
    private javax.swing.JLabel Footer;
    private javax.swing.JLabel Header;
    private javax.swing.JLabel IP_Adress;
    public javax.swing.JLabel LoginIncorrect;
    private javax.swing.JLabel Mast_Clean;
    private javax.swing.JLabel Modemkonfigurationstool_titel;
    private javax.swing.JLabel Password;
    private javax.swing.JLabel Redline;
    private javax.swing.JLabel Username;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JPanel mainPanel;
    // End of variables declaration
/*
    public javax.swing.JButton Connection;
    private javax.swing.JLabel Header;
    private javax.swing.JLabel IP_Adress;
    private javax.swing.JLabel Mast_Clean;
    private javax.swing.JLabel Modemkonfigurationstool_titel;
    private javax.swing.JLabel Password;
    private javax.swing.JLabel Redline;
    private javax.swing.JLabel Username;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JPanel mainPanel;
    public javax.swing.JTextField LoginIncorrect;
  */
 //   private final Timer messageTimer;
  // private final Timer busyIconTimer;
 //   private final Icon idleIcon;
  //  private final Icon[] busyIcons = new Icon[15];
 //   private int busyIconIndex = 0;

    private JDialog aboutBox;

public javax.swing.JLabel getLoginIncorrect(){
 return LoginIncorrect;
}
}
 
Java Konvention ist das kleinschreiben von Variablen und das Großschreiben von Klassen, CamelCase wurde dir ja schon in dem anderen Thread "beigebracht".

An welcher stelle soll denn deiner Meinung nach das JLabel beschrieben/angezeigt werden?

Java:
try{
            socket = new TelnetSocket ( this, this.jTextField1.getText(), this.jTextField2.getText(), this.jTextField3.getText());
        }//End try
        catch(IOException e){
            System.out.println("Zugriffsfehler");
        }//End Catch

Hier wird vermutlich der fehlerhafte Login festgestellt, momentan schreibst du aber hier auf die Konsole den String "Zugriffsfehler". Wenn du das LoginIncorrect Textfeld schon an einer sinnvollen Stelle platziert hast wäre doch die beste Methode es einfach in dem Catch sichtbar zu machen (wenn es vorher invisible war) oder dort erst den Text zu setzen (dann könnte man das Textfeld auch für andere statusmeldungen benutzen). So wie ich den Quellcode lese müsste ja aber eigentlich schon von Anfang an das Textfeld mit der Fehlermeldung sichtbar sein?! Ich kenne allerdings das
Code:
AbsoluteLayout
nicht und weiß daher die -1,-1 Parameter nicht zu deuten.
 

Zurück
Oben