tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von DosCoder
  • 1 Beitrag von DosCoder
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
362
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    flor flor ist offline Mitglied Silber
    Registriert seit
    Mar 2004
    Ort
    Nord Waldeck
    Beiträge
    50
    Hallo,
    habe da mal wieder ein Problem.

    Ich möchte gerne meinen Chat erweitern, indem ich einzelne Räume
    in Tabs ( JTabbedPane) erzeuge.

    Das funktioniert alles ganz gut, bis auf die Kleinigkeit ,das was ich gesendet habe wird
    nicht in meinem outputfield (JTextArea) angezeigt.

    In einem normalen Frame funktioniert das alles wunderbar.
    Wie oder was muss ich machen ?

    Ist das überhaupt zu entfehlen ,sowas mit einem JTabbedPane zu realisieren ?

    Ich sage schon mal Danke.

    mfg flor
     

  2. #2
    Avatar von DosCoder
    DosCoder DosCoder ist offline Mitglied Gold
    Registriert seit
    Sep 2008
    Ort
    Kreis Würzburg(Bayern)
    Beiträge
    228
    Hi,
    da du den Aufbau nur ganz grob skizziert hast, ist es schwar den Fehler zu finden. Vielleicht gibst du mal ein paar Codeschnipsel her, z.B.: die Methode zum empfangen der Nachricht.
    Ciao
    DosCoder
    flor bedankt sich. 
    Man kann mich für das verantwortlich machen, was ich hier schreibe, nicht für das, was andere verstehen.

    Sollte ich mal Mist labern weist mich bitte darauf hin.

    Ich freue mich über ein Danke, wenn ich helfen konnte!

  3. #3
    flor flor ist offline Mitglied Silber
    Registriert seit
    Mar 2004
    Ort
    Nord Waldeck
    Beiträge
    50
    Hi,
    so sieht der Code aus.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*; 
    import java.net.*;
    import java.io.*;
    public class TabDemo extends JFrame implements Runnable ,ActionListener{
    private JTextField textFeld1;
    private JButton button1;
    JButton button2;
    JTextArea textarea;
    JTextField inputext,inputfield2;
    JTextArea outputarea2;
     
    JList liste2;
    PrintStream out;
    BufferedReader in;
     
    Thread thread;
     String name,gruppe;
    Button button;
    List li;
    String newline = "\n";
    Socket server;
       public TabDemo(String title,String name,String gruppe) {
     
     netzwerk();
     setTitle("XXXX  -1-");
          setSize(600,400);
          setLocationRelativeTo(null);
          //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
          
          JTabbedPane tab = new JTabbedPane();//einmal
          add(tab, BorderLayout.CENTER);
        
          JLabel l1 = new JLabel("Label 1");
     
          textFeld1 = new JTextField();
     
          button1 = new JButton("1");
     
          GridBagConstraints gbc = new GridBagConstraints();
     
          JPanel panel1 = new JPanel(new GridBagLayout());
          panel1.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
          panel1.add(l1, gbc);
     
          gbc.gridx = 1;
          gbc.fill = GridBagConstraints.HORIZONTAL;
          gbc.weightx = 1.0;
          panel1.add(textFeld1, gbc);
          
          gbc.gridy = 1;
          gbc.fill = GridBagConstraints.NONE;
          gbc.anchor = GridBagConstraints.EAST;
          gbc.weightx = 0.0;
          panel1.add(button1, gbc);
     
          tab.add(panel1, "Tab1");
           
     
     
         JPanel panel2 = new JPanel(new BorderLayout());
        
          String [] lis ={name};
          JList liste2 = new JList(lis);
       
          liste2.setFixedCellWidth(150);
          liste2.setBackground(Color.red);
          panel2.add(liste2, BorderLayout.EAST); 
          
       
          final JTextArea outputarea2 = new JTextArea(5,20);
          outputarea2.setBackground(Color.yellow);
          outputarea2.addActionListener(this);
          panel2.add(outputarea2, BorderLayout.CENTER);
          // panel2.add("Center", outputarea2);
          final JTextField inputfield2 = new JTextField();
          inputfield2.addActionListener(this);
          panel2.add(inputfield2, BorderLayout.SOUTH); 
     
    inputfield2.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
     
    senden(inputfield2.getText());
    inputfield2.setText("");
     
    }});
     
       
    tab.add(panel2, "Tab2");
     
    setVisible(true);
    }
     
    public void netzwerk(){
        try
            {
            
               //  socket = new Socket(this.getCodeBase().getHost(), PORT);
               Socket server = new Socket("192.168.1.6",1234);
          
                out = new PrintStream(server.getOutputStream(),true);//orgi
                in = new BufferedReader(new InputStreamReader(server.getInputStream(),"UTF-8"));//ok t
     
                  
            } catch (IOException e)
            {
                            e.printStackTrace();
                
                say("Verbindung zum Server fehlgeschlagen!","Child System off");
                
            }
                   if (thread == null)
            {
                thread = new Thread(this);
                thread.setPriority(Thread.MIN_PRIORITY);
                          
                thread.start();
            }
    }
     
        public void run()
        {
             
            String line;
                    String meldung;
     
            try
            {
                      while(true){ 
            //for(;;){
          
                     line = in.readLine();
                       
                 if(line == null)break;
                             //if(line !=null)
                              
                 meldung = line.substring(3);
                           
                 switch(line.charAt(0))
                 {
                
                     case 'S':  //Senden
                         
                             outputarea2.append(meldung +"\n");
                    
                
                             
                             break;
                  default:
                              break;
                             }//switch
                        
                 //thisThread.sleep(interval);      
                //}
                        }
                       //  thisThread = null;
                      // thread.sleep(50);
            } catch (Exception e) {
                             // say(e.toString(),"System"); 
                             e.printStackTrace();
                              say("1.1-Verbindung zum Server abgebrochen","Child System off"); 
                               return;
                               }
    }
     
     
     
    public void actionPerformed(ActionEvent ea){
    // nix
    }
     
    public void senden(String meldung)
       {
         meldung = name + " [ " + gruppe + " ] :: " +  meldung;
         out.println("S: " +  meldung);
      
          out.flush();
    } 
     
    public void say(String msg, String m)
    {
    //outputarea.appendText("* "+msg+" * "+ m +"\n");
    outputarea2.append("* "+msg+" * "+ m +"\n");
    }
       public static void main(String[]args) {
    String name="";
    String gruppe="";
          TabDemo td = new TabDemo("Tabbed Pane Frame",name,gruppe);
     td.netzwerk();
     
       }
    }

    ich hoffe auf eure Hilfe.

    mfg flor
    Geändert von flor (26.04.09 um 20:07 Uhr)
     

  4. #4
    Avatar von DosCoder
    DosCoder DosCoder ist offline Mitglied Gold
    Registriert seit
    Sep 2008
    Ort
    Kreis Würzburg(Bayern)
    Beiträge
    228
    Hi,
    aufgrund der fehlenden Obkejtorientierung und den vielen Kommentaren ist es sehr schwer, deinen Code zu lesen. Das erste was mir aufgefallen ist, ist, dass du dich mit einem anderen PC verbindest. Zum Testen deines Programmes kannst du einfach die IP "127.0.0.1" angeben und den Server auf dem selben PC laufen lassen.
    Kommt denn die Nachricht an? Überprüfe das mal mit Systemout.print();

    Cioa
    DosCoder
     
    Man kann mich für das verantwortlich machen, was ich hier schreibe, nicht für das, was andere verstehen.

    Sollte ich mal Mist labern weist mich bitte darauf hin.

    Ich freue mich über ein Danke, wenn ich helfen konnte!

  5. #5
    flor flor ist offline Mitglied Silber
    Registriert seit
    Mar 2004
    Ort
    Nord Waldeck
    Beiträge
    50
    Hi,
    ich bin jetzt etwas weiter ,hatte das Tab immer über ein Applet gestartet.

    Die Daten werden gesendet, ich habe auch eine Verbindung zu einem
    anderen Client-Applet und dem normalen Frame dort werden die
    Daten die ich mit dem Tab sende ausgegeben.

    Das Problem ist wohl die run() Methode( oder besser gesagt -> outputarea2.append() )
    im Tab die liefert bei direkt starten
    des Tabs beim senden eine Null Pointer Exception .




    aufgrund der fehlenden Obkejtorientierung
    Was muss ich mir darunter vostellen?
    Alles nur Hobby, wobei ich jeden Rat gerne annehme.

    out.println(xx) hatte ich schon im code.

    mfg flor

    edit:
    Der Fehler wird wohl in der Methode netzwerk() Thread ausgelöst.
    /edit
    Geändert von flor (26.04.09 um 18:03 Uhr)
     

  6. #6
    Avatar von DosCoder
    DosCoder DosCoder ist offline Mitglied Gold
    Registriert seit
    Sep 2008
    Ort
    Kreis Würzburg(Bayern)
    Beiträge
    228
    Hi,
    mit fehlender Objektorientierung meine ich, dass du alles in eine Klasse gesteckt hast. Eine Klasse sollte für eine Aufgabe zuständig sein! Bei dir macht diese Klasse folgendes:
    1.Aufbauen jedes einzelnen GUI-Objektes, man könnte das so machen, dass man für jedes GUI-Objekt eine Unterklasse erzeugt und im Konstruktor das Objekt konstruiert (Background, Text, etc), dazu ist ein Konstruktor schließlich da.
    2.Senden der Nachricht , hier könnte man eine eigene Klasse für den Thread programmieren
    3.Abholen der Nachirchten, siehe Punkt oben
    4.Aufbauen des Netzwerkes, hier ist eindeuting eine eingene Klasse von nöten.

    Nun zu deinem Problem:
    Die Methode JTextArea.appendText gibt es nicht!. Kommt den beim Kompilieren keine Fehlermeldung? Statt appendText kannst du mal nur append versuchen.

    Ciao
    DosCoder
    flor bedankt sich. 
    Man kann mich für das verantwortlich machen, was ich hier schreibe, nicht für das, was andere verstehen.

    Sollte ich mal Mist labern weist mich bitte darauf hin.

    Ich freue mich über ein Danke, wenn ich helfen konnte!

  7. #7
    flor flor ist offline Mitglied Silber
    Registriert seit
    Mar 2004
    Ort
    Nord Waldeck
    Beiträge
    50
    Hi,
    sorry Fehler von mir,

    ich benutze nur : append();

    das appendText ist noch aus dem Applet awt ,Fehler bei copi and paste .

    ok,das werde ich versuchen.

    mfg flor
     

Ähnliche Themen

  1. Chat-Client Programmieren
    Von derMarvin im Forum Coders Talk
    Antworten: 4
    Letzter Beitrag: 01.09.08, 11:13
  2. Winsock Chat Client
    Von fiction im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 07.06.07, 23:15
  3. Chat Client
    Von CoderX im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 27.09.05, 17:18
  4. OS 9 IRC Chat Client
    Von Demel im Forum Mac OS
    Antworten: 4
    Letzter Beitrag: 11.07.04, 19:39
  5. IRC Chat Client
    Von F|ghtEr im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 0
    Letzter Beitrag: 28.03.02, 02:49

Stichworte