Also Java ist schon etwas eigenwillig, in der Firma schreibt es in utf8 raus und jetzt das jar-file zuhause plötzlich in ANSI, hätte von der tastatur abbeißen können vor ärger nach dem ich eine stunde Vokabeln eingetipt habe für nichts...
Hab im Forum schon gefunden, man kann utf8 auch beim schreiben erzwingen aber nach was richtet sich java standardmäßig?
Standardmäßig wird afaik die Codierung verwendet, die das OS benutzt, darum sollte sowohl beim Lesen als auch beim Schreiben die Codierung angegeben werden.
Übrigens aufpassen, wenn man die Speicherdatei mit einem Editor bearbeitet und dann speichert, da kann sich die Codierung ändern, womit du aber deine Arbeit retten kannst!
BufferedWriter out = new BufferedWriter(new OutputStreamWriter
(new FileOutputStream("Vokabeln.txt",true),"UTF8"));
Das einzige was mich stört, dass der nicht erkennt wenn er das erste mal in ein file schreibt.
der hier:
Code:
PrintWriter fileWriter = new PrintWriter(new FileWriter("Vokabeln.txt",true));
kann println und schreibt immer eine neue zeile egal zu welchem zeitpunkt.
Bei meiner version, muss man jetzt out.newLine(); davor setzen und dadurch entsteht mir eine leerzeile am anfang der datei, stört jetzt funktionell nicht ist aber auch nicht schön.
Habe auch out.write("/n"+variable); Probiert dann schreibt er zwar in einer neuen Zeile aber auch das "/n" .
Bei meiner Jtabel ist es jetzt möglich durch einen klick auf den spaltenheader die spalte abzudecken, in dem ich beim cellrenderer einfach hintergrund und vordergrung auf die selbe farbe setze. Soweit so gut! Leider lassen sich die spalten verschieben und man muss manchmal öfter klicken bevor java weiß was man von ihm will, es wechselt in den "verschiebemodus" und deckt die spalte nicht ab oder auf. Der effekt ist auch nicht 100% wiederholbar da es irgendwie mit dem klicken zusammenhängt.
Jetzt habe ich zu dem thema folgendes gefunden; http://www.java-forum.org/awt-swing-swt/52258-jtable-spalten-verschieben-deaktivieren.html
in dem dieser befehl vorgeschlagen wird myJTable.getTableHeader().setReorderingAllowed(false) . Das problem dabei ist, nach der deaktivierung ist es nicht mehr möglich die ganze spalte abzudecken. Es tut sich erst einmal gar nichts und wenn man dann die zellen anklickt die gefärbt sein sollten, kann man sie nahezu einzeln umfärben.
Hat da jemand eine idee/lösung?
Ich hab jetzt die not zur tugend gemacht und die ausgabe sowie die logik für das abdecken an die jeweilige, nun beliebige, spaltenposition angepasst. Sprich es steht jetzt in jeder spalte immer das drinn was auch drauf steht.
Jetzt würde ich allerdings gern die vom user neu definierte reihenfolge abspeichern und beim nächsten neustart die spalten gleich in der reihenfolge darstellen.
Gibt mir die spaltennummer, die sich beim verschieben aber nicht ändert !!
Es verschiebt sich demnach nur der header.
Ich würde jetzt gern zb: dem modelindex 0 die spalte "C" zuweisen 1 -> "B" 2->"C" ... also eigentlich genau das was der user mit der mous durch drag and drop macht.
Konnte das leider nicht finden/oder nicht herauslesen.
nach langer Zeit habe ich mal wieder etwas nicht finden können.
Ich Speicher den text aus einer Jtextarea in einem file ab das ca. so aussieht
*******
0;kopf;0;Dies ist eine testgruppe mit vieeeel text.
Dieser Text enthält mindestens einen Zeilenumbruch und geht über mehrere zeilen, er sit auch lang genug um in dem Scrollpanel zu scrollen.
1;test;0;Noch keine Beschreibung.
2;test2;0;Noch keine Beschreibung.
**************
die letzten 2 zeilen sind so wie ich es erwarte.
Bei der ersten Zeile habe ich in der jtextarea einmal enter gedrückt und somit eine neue zeile erzeugt.
Wie kann ich das einlesen, so dass ich einfach den String wieder in die JTextarea setzen kann. Das Problem ist, das er nach dem enter beim einlesen auch eine zweite zeile beginnt und die kann ich so gar nicht verdauen.
Code:
while ((zeile = br.readLine()) != null)
{
if (zeile.length()!= 0)
{
zeilelesen = new GruppenZeile();
String[] spalten = zeile.split(";");
System.out.println(zeile);
System.out.println(spalten[0]);
zeilelesen.setLaufNummer(Integer.parseInt(spalten[0]));
zeilelesen.setGruppenName(spalten[1]);
zeilelesen.setAnzahlWoerter(Integer.parseInt(spalten[2]));
zeilelesen.setGruppenBeschreibung(spalten[3]);
GruppenTabelle.setAlleGruppen(zeilelesen);
}
}
plötzlich steht in spalte null der text aus der 2.zeile der ja noch in die erste gehört und im programm wird natürlich nur der text vor dem enter angezeigt.