[gelöst] Grundlagenfehler

Status
Nicht offen für weitere Antworten.

assoziatives pseudonym

Aktives Mitglied
Ich erstelle gerade ein kleines Programm, mit dem man verschlüsselt Dateien zwischen mehreren Hosts über direkte Verbindungen übertragen kann, ich hab ca. 1/3 fertig und stosse nun auf ein für mich unverständliches Problem: Nach dem hinzufügen eines Netzwerk-Teilnehmers liegt der switch-Fall "action.keineTeilnehmerHinweis" in der Klasse "action" vor, was aber eigentlich nicht sein kann (sollte), da ja soeben ein Teilnehmer hinzugefügt wurde und zudem (noch) keine wiederholte Abfrage über die Anzahl der bereits eingetragenen Teilnehmer besteht ... kann mir jemand meinen Fehler zeigen? Danke.

Mab benötigt zum kompilieren diese Lib: http://sourceforge.net/projects/jregistrykey/

Code:
package dataninja;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class dateitransfer {   

   public static void main(String[] args) {       
   
            GUI oberfl = new GUI("erster Test");
            oberfl.introscreen();
            registry r = new registry(true);
            String[][] netzwerk = r.getTeilnehmer();
            if(netzwerk == null) {
                oberfl.leereDB = true;
                oberfl.meldung("Es wurden bisher keine Netzwerk-Teilnehmer eingestellt, bitte ändern sie das im nachfolgenden Dialog!");
            }
    
    }
}






class listener extends Thread {
    public String fehler = null;    
    private boolean ende = false;
    public String zieldatei = null;
    private watchdog w = null;
    
    listener(watchdog w) {
        this.setPriority(Thread.MIN_PRIORITY);
        this.w = w;
        this.start();        
        
    }
    
    @Override public void run() {
        try {

            ServerSocket ssocket = new ServerSocket(10000);
            while (ssocket.isBound() && this.ende == false) {
                Socket s = ssocket.accept();
                System.out.println("SERVER: wir lauschen jetzt!");
                if (s.isConnected()) {
                    TCP t = new TCP(this.w);
                    t.empfangen(s, zieldatei);
                }
            }
        } catch (IOException ex) {
            
            this.fehler += " %%%Socket konnte nicht angelegt werden";
        }
    }
}
Code:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package dataninja;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

/**
 *
 * @author tha_specializt
 */
class GUI extends JFrame {
    public boolean leereDB = false;
    private final GridBagLayout l = new GridBagLayout();
    private final GridBagConstraints g = new GridBagConstraints();
    private final int seitenabstand_v = 50;
    private final int seitenabstand_h = 50;
    
    
    GUI(String titel) {
        super(titel);        
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);              
        this.setLayout(this.l);        
        
    }
    public void neuerTeilnehmer() {
        JInternalFrame intern = new JInternalFrame("neuen Netzwerk-Teilnehmer hinzufügen");
        intern.setPreferredSize(new Dimension((int)this.getSize().getWidth() / 2, (int)this.getSize().getHeight() / 2));
        
        intern.setLayout(this.l);
        
        this.g.gridy = 1;
        this.g.gridx = 1;
        this.g.fill = GridBagConstraints.HORIZONTAL;
        this.g.insets = new Insets(0,10,0,10);
       
        
        JLabel nicktext = new JLabel("Nickname");
        nicktext.setHorizontalAlignment(JLabel.CENTER);
        intern.getContentPane().add(nicktext, this.g);        
        this.g.gridx = 2;
        JLabel hosttext = new JLabel("Hostname / FQDN / IP");
        hosttext.setHorizontalAlignment(JLabel.CENTER);
        intern.getContentPane().add(hosttext, this.g);        
        this.g.gridx = 3;
        JLabel porttext = new JLabel("Port");
        porttext.setHorizontalAlignment(JLabel.CENTER);
        intern.getContentPane().add(porttext, this.g);
        
        this.g.gridy = 2;
        this.g.gridx = 1;
        JTextField nick = new JTextField();        
        nick.setPreferredSize(new Dimension(100, (int)nick.getPreferredSize().getHeight()));
        intern.getContentPane().add(nick, this.g);
        this.g.gridx = 2;
        
        JTextField host = new JTextField();
        
        intern.getContentPane().add(host, this.g);
        this.g.gridx = 3;  
        JTextField port = new JTextField();        
        port.setPreferredSize(new Dimension(40, (int)port.getPreferredSize().getHeight()));
        intern.getContentPane().add(port, this.g);
        this.g.gridx = 1;
        this.g.gridwidth = 3;
        this.g.gridy = 3;
        this.g.insets = new Insets(30,0,0,0);
        this.g.fill = GridBagConstraints.NONE;
        JButton ok = new JButton("hinzufügen");
        ok.setHorizontalAlignment(JButton.CENTER);
        JTextField[] felder = {nick, host, port};
        ok.addActionListener(new action(intern, felder, action.neuerTeilnehmer));        
        intern.getContentPane().add(ok, this.g);        
        
        this.getContentPane().add(intern);
        intern.setVisible(true);
        
    }
    public void meldung(String m) {
        watchdog w = new watchdog(this);
        JInternalFrame intern = new JInternalFrame("Systemmitteilung");        
        
        intern.setOpaque(true);
        JButton ok = new JButton ("OK");
        if(this.leereDB) {
            ok.addActionListener(new action(this, intern, action.keineTeilnehmerHinweis));
            this.leereDB = false;
        } else {
            ok.addActionListener(new action(intern));
        }
        JLabel text = new JLabel(m);               
        intern.setLayout(this.l);        
        intern.setPreferredSize(new Dimension((int)this.getSize().getWidth() / 2, (int)this.getSize().getHeight() / 2));
        
        this.g.gridx = 2;
        
        if(text.getWidth() >= (int)intern.getSize().getWidth()) {
            
            int zeilen = (int)Math.ceil(intern.getPreferredSize().getWidth() / text.getPreferredSize().getWidth());
            
            String[] geteilt = text.getText().split("");
            geteilt[0] += "<HTML><BODY>";
            JLabel temptext = new JLabel("");            
            
            for(int i = 0; i < geteilt.length; i++) {
                temptext.setText(temptext.getText()+geteilt[i]);
                if(temptext.getPreferredSize().getWidth() >= intern.getPreferredSize().getWidth()-this.seitenabstand_h) {
                   for(int b = i; b > 0; b--) {
                        if(geteilt[b].equals(" ")) {
                            geteilt[b] += "
";
                            break;
                        }                        
                        
                    }
                   temptext.setText("");
                }
            }
            geteilt[geteilt.length-1] += "</BODY></HTML>";
            text.setText("");
            for(int i = 0; i < geteilt.length; i++) {
                text.setText(text.getText()+geteilt[i]);
            }
        }
        //!!!!!!!!!!!!!!!!!Wenn text_v >= seitenabstand_v!!!!!!!!!!!!!!!!!!!!
        
        intern.getContentPane().add(text, this.g);
        
        this.g.gridy = 2;
        JLabel leer = new JLabel(" ");        
        intern.getContentPane().add(leer, this.g);
        
        this.g.gridy = 3;
        intern.getContentPane().add(ok, this.g);        
        
        
        this.getContentPane().add(intern);
        
        
        intern.setVisible(true);
        
        
    }    
    void introscreen() {
        
        ImageIcon icon = new ImageIcon("C:/Users/tha_specializt/Desktop/kewle Bildaz/Hacker.jpg");
        
        JLabel label = new JLabel(icon);
        label.setOpaque(false);
        
        //this.getContentPane().add(label);
        this.setSize(new Dimension(800,600));
        
        
        this.setLocationRelativeTo(null);        
        this.setVisible(true);    }
}
Code:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package dataninja;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JInternalFrame;
import javax.swing.JTextField;

/**
 *
 * @author tha_specializt
 */
class action implements ActionListener {
    public final static byte neuerTeilnehmer = 1;
    public final static byte keineTeilnehmerHinweis = 2;
    public final static byte scrollpane = 3;
    private JInternalFrame f = null;
    private GUI gui = null;
    private JTextField[] felder = null;
    private byte typ = 0;
    
    
    action(JInternalFrame f) {
        this.f = f;        
    }
    
    action(GUI gui, JInternalFrame f, byte typ) {
        this.gui = gui;
        this.f = f;
        this.typ = typ;
    }
    
    action(JInternalFrame f, JTextField[] felder, byte typ) {
        this.f = f;
        this.typ = typ;
        this.felder = felder;
    }
    
    action(GUI gui, byte typ) {
        this.gui = gui;
        this.typ = typ;
    }
    

    public void actionPerformed(ActionEvent e) {
        try {
            if(this.f != null && this.typ == 0 )                
               this.f.setClosed(true);              
            
            
            switch(this.typ) {
                case(action.neuerTeilnehmer) : {                    
                    new registry(false).teilnehmerHinzufuegen(this.felder[0].getText(), this.felder[1].getText(), 
                            Integer.parseInt(this.felder[2].getText()));
                    this.felder[0].setText("");
                    this.felder[1].setText("");
                    this.felder[2].setText("");
                    this.f.setClosable(true);
                };
                
                case(action.keineTeilnehmerHinweis) : {
                    this.f.setClosed(true);
                    this.gui.neuerTeilnehmer();                    
                };
            }
                
            
        } catch (PropertyVetoException ex) {
            Logger.getLogger(action.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
}
Code:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package dataninja;

import ca.beq.util.win32.registry.RegistryKey;
import ca.beq.util.win32.registry.RegistryValue;
import ca.beq.util.win32.registry.RootKey;

/**
 *
 * @author tha_specializt
 */
class registry {
    private final RegistryKey dn = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\" +
                        "tha_specializt\\DataNinja");
    registry(boolean init) {         
        if(init) {
            RegistryKey pfad = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software");                
            if(pfad.hasSubkey("tha_specializt") == false)
                pfad.createSubkey("tha_specializt");                
            RegistryKey ziel = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\" +
                    "tha_specializt");
            if(ziel.hasSubkey("DataNinja") == false)
                ziel.createSubkey("DataNinja");               

            RegistryValue hosts;
            
            if(this.dn.hasValue("hosts") == false) {                            
                hosts = new RegistryValue("hosts", "");                
                dn.setValue(hosts);
            }
            
            
        }
            
    }
                
    public String[][] getTeilnehmer() {
        String daten = this.dn.getValue("hosts").getData().toString();             
        
        if(daten.length() <= 0)
            return null;
        
        String[] datenarray = daten.split(";");        
        int anzahlTeilnehmer = datenarray.length;       
        
        if(anzahlTeilnehmer == 0)
            return null;       
        
        String[][] teilnehmer = new String[3][anzahlTeilnehmer];
        for(int i = 0; i < anzahlTeilnehmer; i++) {
            teilnehmer[0][i] = datenarray[i].substring(0, datenarray[i].indexOf("@"));
            teilnehmer[1][i] = datenarray[i].substring(datenarray[i].indexOf("@")+1, datenarray[i].indexOf(":"));
            teilnehmer[2][i] = datenarray[i].substring(datenarray[i].indexOf(":")+1);                    
        }
        
        return teilnehmer;               
    }
    public void setEinstellung(RegistryValue wert) {
        this.dn.setValue(wert);
    }
    public void teilnehmerHinzufuegen(String nickname, String host, int port) {
        
        String trenner = this.getTeilnehmer() == null ? "" : ";";        
        String kodiert = trenner+nickname+"@"+host+":"+String.valueOf(port);
        String bisher = this.dn.getValue("hosts").getData().toString();
        RegistryValue neu = new RegistryValue("hosts", bisher+kodiert);
        this.dn.setValue(neu); 
    }
}
 

parabool

Bekanntes Mitglied
schließe die case-Blöcke mit einen break ab. (class action - ab zeile 58)

Wenn z.B auf den 1. case geswitcht wird, und dieser nicht mit break
abgeschlossen ist, dann wird auch der 2. case ausgeführt. Es "rutscht" quasi durch.
 

assoziatives pseudonym

Aktives Mitglied
ah, danke! Hätte ich eigentlich wissen müssen ... aber das is ja auch n totaler Schwachsinn, ich hab noch nie kapiert wieso man das derart "brutal" abbrechen muss ???:L
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Swing [Gelöst]Radiobuttons "Verknüpfen" AWT, Swing, JavaFX & SWT 3
H Puzzle - Erkennen wenn gelöst (array vergleichen) AWT, Swing, JavaFX & SWT 10
Pithecanthropus [gelöst] JTree, aber nicht mit Strings, sondern mit Objects? AWT, Swing, JavaFX & SWT 2
Pithecanthropus [gelöst ]ActionListener soll nur Änderungen "bemerken" AWT, Swing, JavaFX & SWT 2
H [gelöst] Swing Elemente verdecken AWT, Swing, JavaFX & SWT 14
R [gelöst]Fenster schließen - trotz Endlosschleife in der Paint-Methode? AWT, Swing, JavaFX & SWT 3
H Swing [gelöst]Neues Swing Element erstellen AWT, Swing, JavaFX & SWT 4
J [gelöst] nicht installierte Schrftart nutzen AWT, Swing, JavaFX & SWT 8
M Swing [gelöst] JTable: Edit abstellen AWT, Swing, JavaFX & SWT 3
S Swing [gelöst] GUI-Befehle bleiben wirkungslos, wenn danach was großes gemacht wird. AWT, Swing, JavaFX & SWT 5
S [gelöst] API zum bequemen Navigieren und Auswählen von Ordnern AWT, Swing, JavaFX & SWT 3
P Swing [gelöst/erledigt] Gleicher Code läuft unterschiedlich unter Linux und Windows AWT, Swing, JavaFX & SWT 5
Dragonfire ZoomImage flackert -> Fehler: repaint-Aufruf [gelöst] AWT, Swing, JavaFX & SWT 5
P [gelöst] Verschiebbare Komponenten mit Linien verbinden AWT, Swing, JavaFX & SWT 2
J [gelöst] repaint problem AWT, Swing, JavaFX & SWT 2
R Gelöst: panelGrösse innerhalb eines JFrames AWT, Swing, JavaFX & SWT 7
M problem mit repaint()-Methode[gelöst] AWT, Swing, JavaFX & SWT 8
ModellbahnerTT [gelöst]Frage und Problem zu Swing AWT, Swing, JavaFX & SWT 4
G [gelöst] "Größe" von drawString AWT, Swing, JavaFX & SWT 4
T [gelöst] JFrame Grundlagen (Größe und Darstellung) AWT, Swing, JavaFX & SWT 6
E Inhalt einer JComboBox ... -gelöst AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben