2Danke
ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
362
362
EMPFEHLEN
-
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
-
25.04.09 09:46 #2
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
DosCoderMan 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!
-
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 florGeändert von flor (26.04.09 um 20:07 Uhr)
-
26.04.09 12:29 #4
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
DosCoderMan 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!
-
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 .
Was muss ich mir darunter vostellen?aufgrund der fehlenden Obkejtorientierung
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.
/editGeändert von flor (26.04.09 um 18:03 Uhr)
-
26.04.09 19:15 #6
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
DosCoderMan 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!
-
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
-
Chat-Client Programmieren
Von derMarvin im Forum Coders TalkAntworten: 4Letzter Beitrag: 01.09.08, 11:13 -
Winsock Chat Client
Von fiction im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 07.06.07, 23:15 -
Chat Client
Von CoderX im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 27.09.05, 17:18 -
OS 9 IRC Chat Client
Von Demel im Forum Mac OSAntworten: 4Letzter Beitrag: 11.07.04, 19:39 -
IRC Chat Client
Von F|ghtEr im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 0Letzter Beitrag: 28.03.02, 02:49





Zitieren
Login





