"We are back" « oc.at

Kurze Java Frage

tinker 30.10.2008 - 16:25 2619 29
Posts

tinker

SQUEAK
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5250
Naja, in dem Fall ist der Aufbau ja sinnvoll. TabelleA fungiert quasi als 'Vater'.

Wenn ein User hergeht und einen Datensatz in TabelleB anlegt, muss er zuerst einen 'Vaterdatensatz' aus TabelleA auswählen. Dann kann er hergehen und alle Werte vom Vater übernehmen, oder er ändert den einen oder anderen.

Ansonsten is das mit der Normalform eh klar. :)

tinker

SQUEAK
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5250
Hab wieder mal ne kurze Frage:
Wie kann ich auf den Pfad in dem ein jar-File ausgeführt wird zugreifen? Hab einen Ordner in dem das jar-File und ein xml-File liegen, jetzt muss ich aus dem jar heraus auf das xml-File zugreifen. Natürlich dynamisch. Aber wie? Hab bisher irgendwei nichts gefunden.

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
ist das nicht die gleiche frage wie die erste? oder versteh ich da was falsch?

tinker

SQUEAK
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5250
Oha, stimmt. Aber da hat an COLOSSUS Vorschlag was nicht funktioniert. Ich werds ma nochmal anschaun.
// Aha, passt eh. Hm... zeitweis bin ich etwas überfordert... never mind...
Bearbeitet von tinker am 19.12.2008, 12:19

tinker

SQUEAK
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5250
Muss in einem Programm einen kleinen rtf-Editor zur Verfügung stellen.
Verwende dazu eine JTextPane. Für die Funktionalitäten die ich bisher hab, greif ich auf das StyledEditorKit zurück. Zb.:
Code:
Action action = new StyledEditorKit.AlignmentAction("left", StyleConstants.ALIGN_LEFT);
btAlignLeft.setAction(action);

Derzeit fehlen mir noch Implementierungen für Aufzählungen und Nummerierungen. Aber anscheinend werden diese nicht vom StyledEditorKit zur Verfügung gestellt. Hat jemand irgendwelche Hinweise? Google spuckt nicht wirklich was aus, liegt vor allem daran, das ich nicht weiß wonach ich suchen soll.

tia

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
hab jetzt nur ganz kurz gegoogelt und nicht wirklich nachgeschaut, aber warum keine JEditorPane? die unterstützt, was ich so gesehen hab, rtf per default. und dann hab ich noch ein RTFEditorKit gesehen... schaut brauchbar aus.

tinker

SQUEAK
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5250
JTextPane ist von JEditorPane abgeleitet. Unterstützt rtf auch per default. Und das RTFEditorKit is zum lesen und schreiben von RTF-Files, dafür benutze ich es auch. Bei den Action-Funktionen, um dies mir geht, verfügt es aber nicht um mehr als das StyledEditorKit das ich verwende, also bringt das auch nichts.

Aber danke. Sonst noch wer einen Hinweis?

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
Zitat von tinker
JTextPane ist von JEditorPane abgeleitet. Unterstützt rtf auch per default. Und das RTFEditorKit is zum lesen und schreiben von RTF-Files, dafür benutze ich es auch. Bei den Action-Funktionen, um dies mir geht, verfügt es aber nicht um mehr als das StyledEditorKit das ich verwende, also bringt das auch nichts.

ah, ok. danke. kommt davon, wenn man nicht genau schaut :/

tinker

SQUEAK
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5250
weiß keiner was?

tinker

SQUEAK
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5250
Das Problem besteht noch immer, also wenn wer was weiß, bitte, nur zu.

Derweil hab ich aber auch ein anderes Problem.
Wie gesagt hab ich im Programm einen kleinen rtf-Editor. Den formatierten Text speichere ich in die DB in ein CLOB-Feld.

So, folgender Aufbau:
Code:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try {
            rtf.write(baos, tpEditor.getDocument(), 0, tpEditor.getDocument().getLength());
        
            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
            BufferedReader in = new BufferedReader(new InputStreamReader(bais));
            
            DataAccess.saveXXX(id, in, 0);
        } catch (Exception ex) {
            [...]
        }
rtf ist vom Typ RTFEditorKit. Mit der Methode write wird einfach der Text, mitsamt formatierungen, aus der TextPane in den OutpuStream geschrieben. Den ließ ich dann mit einem BufferedReader aus und übergib den an die saveXXX Methode:

Code:
@Override
    public void saveXXX(int id, Reader in, int length) throws Exception {
        Connection conn = dbpool.getConnection();

        String sql = "<unwichtig>";
        PreparedStatement stat = conn.prepareStatement(sql);
        stat.setCharacterStream(1, in, length);
        stat.setInt(2, id);

        stat.executeUpdate();

        dbpool.releaseConnection(conn);
    }
So, und mein Problem ist jetzt, das die Methode setCharacterStream eine Längenangabe 'fordert'. 'Fordert' desshalb, weils die Methode auch ohne der Längenangabe gibt, ich dann aber immer eine Exception bekomme (irgendwas mit Zugriff auf Abstract-Methode oder so, ich kanns eh posten wenn gewollt)

Tjo, und jetzt meine Frage:
Wie komm ich beim BufferedReader zu einer Länge?

tia, und falls was unklar sein sollte, bitte sagen

Nico

former person of interest
Registered: Sep 2006
Location: -
Posts: 4082
eventuell kannst die länge schon im try statement vor der "verarbeitung" auslesen und dann mitübergeben?

tinker

SQUEAK
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5250
Jop, hab ich mir auch schon gedacht:
In ner Schleife und mit readLine() den BufferedReader durchgehen und die Chars zählen. Aber überzeugt bin ich von der Methode nicht :/

DirtyHarry

aka robobimbo
Avatar
Registered: Apr 2001
Location: outer space
Posts: 464
Blöde Frage, aber warum einen BufferedReader wenn Du eh aus dem Speicher ausliest?

BufferedReaders machen Sinn wenn Du von Disk oder aus dem Netz was liest, aber aus dem Speicher ist es imho nur unnötiger Overhead.

Am ByteArrayInputStream hast Du eine schöne Methode: bais.available() - da sollte eigentlich Deine gewünscht Grösse drinnenstehen.

tinker

SQUEAK
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5250
setCharacterStream braucht nen Reader.
Aber bais.available() hört sich gut an, danke!

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von tinker
Derzeit fehlen mir noch Implementierungen für Aufzählungen und Nummerierungen. Aber anscheinend werden diese nicht vom StyledEditorKit zur Verfügung gestellt. Hat jemand irgendwelche Hinweise? Google spuckt nicht wirklich was aus, liegt vor allem daran, das ich nicht weiß wonach ich suchen soll.

tia
afaik sind bullets/numbering nichts anderes als "symbol<indent>moretext", daher würde auch aus Sicht des Frameworks kein Sinn bestehen dafür extra Funktionen anzubieten (nachdem ja rich text nicht vom "user" geschrieben werden soll, ganz im Gegensatz zu zB. HTML) - auch weil die Sache etwas umständlich werden kann.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz