PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java und so ne art HTML



element
16.01.2008, 11:59
Guten Tag zusammen.

Also folgendes: In der Firma habe ich und mein Kollegen zur Zeit ein Java Projekt am laufen. Ich bin zuständig für das Framework und die Hauptanzeigen. Nun bindet diese Hauptanzeige verschieden JPanels ein. Nun können/sollen die JPanels über die Funktion showMessage Fehlermeldungen/Hilfetexte anzeigen. Zum übergeben der Texte war ein String angedacht. Nun ist aber die Idee aufgetaucht das der User auf den Text auch klicken könnte um z.B. ein requestFocus auzulösen oder auch den Text zu formatieren.
Gibt es nun die Möglichkeit (ist nur eine Idee wenn besere da sind bitte Melden) z.B. wie bei HTML Den Text so zu formatieren oder auch "Hyperlinks"(Also Action-Listener) einzubinden??

mfg element

supersucker
16.01.2008, 12:19
Häh, wie meinen?

-> Du hast 'ne Applikation mit Swing-Gui, right?
-> Und nun willst du dem user die Möglichkeit geben den Text auf _einer_ bestimmten Komponente zu formatieren?

Sorry, aber mir ist nicht klar was du meinst und was das bringen soll.

Versuch doch ein Fallbeispiel zu geben.

element
16.01.2008, 12:42
mhh ok

Also Swing-GUI ist richtig. Ich binde nun in meinem Framwork das JPanel Artikel ein wo Artikel angezeigt und Bearbeitet werden können. Wenn der USer nun z.B. in Dem JTextField txtArtikel einen Flaschen Artikel eingibt soll in meinem JPanel die Fehlermeldung angezeigt werden wie z.B.: "Bitte geben Sie einen gültigen Artikel ein!". Nun soll der User auf Artikel klicken können und es wird ein txtArtikel.requestFocus() ausgeführt. Außerdem soll Artikel z.B. unterstrichen sein.



EDIT:\\

Was ich gefudnen ahbe ist: http://java.sun.com/developer/JDCTechTips/2003/tt1210.html#2

Dort kann ich aber leider keine Funktionen ausführen lassen.
Man könnte zwar ein JLabel benutzen mit einen ActionListener aber am besten wäre es wenn nur "Artikel" anklickbar wäre

supersucker
16.01.2008, 13:01
Ok, jetzt weiß ich was du meinst.


Man könnte zwar ein JLabel benutzen mit einen ActionListener aber am besten wäre es wenn nur "Artikel" anklickbar wäre

Was anderes wäre mir jetzt leider auch nicht eingefallen.

Wenn dir / jemand anders noch was einfällt, nur raus damit......8)

element
16.01.2008, 13:08
Ok Schade aber trotzdem danke für deine Hilfe

espo
16.01.2008, 13:18
Es gibt da was das heist jsf (http://de.wikipedia.org/wiki/JavaServer_Faces) das könnte sowas sein was du suchst.

greetings
espo

element
16.01.2008, 13:20
Ne tut mir leid das ist absolut nicht das was ich suche. Die Fehlermeldung soll in einem JPanel angezeigt werden

supersucker
16.01.2008, 13:27
Es gibt da was das heist jsf (http://de.wikipedia.org/wiki/JavaServer_Faces) das könnte sowas sein was du suchst.


Äh, ja, und jetzt erklärst du mal bitte, was JSF und Swing auch nur im entferntesten miteinander zu tun haben.

espo
16.01.2008, 13:36
@supersucker
Äh im entferntesten es kommt von der gleichen Firma.

@element
Sorry da hab ich was falsch gelesen.

element
16.01.2008, 14:58
Wo wir grade so schön am diskutieren sind:

Bei einem JTable gibt es ja die möglcihekti sich die Spalten selber anzuordnen. Dies kann der User ja per Drag&Drop erledigen. Gibt es nun auch eine möglichkeit diese von User festegelegte anoordnung zu speichern?

bytepool
16.01.2008, 15:06
Joa, da sollte es mehrere Moeglichkeiten geben. Eine Moeglichkeit waere z.B. das JTable Objekt an sich zu speichern, und beim naechsten Start wieder zurueck zu schreiben.
Geht aber sich auch anders.

mfg,
bytepool

element
16.01.2008, 15:07
Ja der gedanke ist mir auch schon gekommen. Allerdings werden Die daten die im JTabel stehen aus einer db geholt deswegen wer es besser und acuh platzsparender wenn ich nur di eposition speichern könnte

bytepool
16.01.2008, 15:10
Einfach nur das JTableHeader Objekt speichern? Sorry, hab solche Sachen schon zu lange nicht mehr gemacht, wie man das am besten hinkriegt muesste ich auch in der API nachschlagen ;)

mfg,
bytepool

element
16.01.2008, 15:15
Also wenn ich versuche das JTAbel zu speichern:


try {
XMLEncoder xe = new XMLEncoder(new FileOutputStream("test.xml"));
xe.writeObject(getJTable());
xe.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}

kommt:

java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 1
Continuing ...
java.lang.IllegalAccessException
Continuing ...
java.lang.RuntimeException: failed to evaluate: <unbound>=Class.new();
Continuing ...
java.lang.Exception: XMLEncoder: discarding statement XMLEncoder.writeObject(JTable);
Continuing ...


Und wenn ich versuche das JTableHeader zu speichern:


try {
XMLEncoder xe = new XMLEncoder(new FileOutputStream("test.xml"));
xe.writeObject(getJTable().getTableHeader());
xe.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}

kommt:


java.lang.IllegalAccessException
Continuing ...
java.lang.RuntimeException: failed to evaluate: <unbound>=Class.new();
Continuing ...
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 2
Continuing ...
java.lang.Exception: XMLEncoder: discarding statement XMLEncoder.writeObject(JTableHeader);
Continuing ...

bytepool
16.01.2008, 15:17
Ja, da hatte ich grade erst was zu gelesen:


Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeansTM has been added to the java.beans package. Please see XMLEncoder.


Quelle: http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/table/JTableHeader.html

Scheinbar benutzt du eine zu neue Java Version ;)

edit:
Ach, was red ich denn hier, das scheinst du ja schon zu benutzen...
Ich kannte bis dato nur serializable, habe aber auch die letzten 3 Jahre nicht mehr mit Swing GUIs gearbeitet. Sorry, kenn ich mich nicht mehr mit aus.

mfg,
bytepool

element
16.01.2008, 15:18
Also ich würde 1.5 nciht unbedingt als neu bezeichen.

Also gibt es keine Möglcihekit zu speichern?

bytepool
16.01.2008, 15:25
Siehe mein edit. Gehen tut's bestimmt, aber Java hat sich scheinbar die letzten 3 Jahre doch zu stark veraendert als dass ich noch mitreden koennte ;)

edit:
du solltest aber wahrscheinlich noch einen BufferedOutputStream vorschalten. Keine Ahnung ob es daran liegt, moeglich isses.



XMLEncoder e = new XMLEncoder(
new BufferedOutputStream(
new FileOutputStream("Test.xml")));


mfg,
bytepool

element
16.01.2008, 15:43
Siehe mein edit. Gehen tut's bestimmt, aber Java hat sich scheinbar die letzten 3 Jahre doch zu stark veraendert als dass ich noch mitreden koennte ;)

edit:
du solltest aber wahrscheinlich noch einen BufferedOutputStream vorschalten. Keine Ahnung ob es daran liegt, moeglich isses.



XMLEncoder e = new XMLEncoder(
new BufferedOutputStream(
new FileOutputStream("Test.xml")));


mfg,
bytepool


Ok Schade das mit dem BufferedOutputStream geht leider auch nciht