.| Autor | Beitrag |
|---|---|
|
000 13.01.2005, 11:23 McE-Madden |
Hallo ich hoffe mir kann hier einer Helfen! Ich möchte via Java einen Windows-befehl ansprechen.. Copy (strg+c) und Paste (strg+v) das wäre die einfachste lösung ohne selbst das Clipboard mit JTable inhalten voll zu packen. Ich weiß auch ned so wirklich wie des geht. :( deshalb, wie kann ich die windows befehle ansprechen.. sodass ich nur noch den button [kopieren] erzeugen muss und der das [strg]+[c] ausführt. ich freue mich auf antworten. EJOT Productions |
|
Profil || Suche |
|
001 13.01.2005, 13:12 Kriz |
Geht nicht. Java hat seine eigene Clipboard-Architektur, wie du bereits bemerkt hast. Wenn du komplexere Dinge als Text kopieren willst (das übernimmt freundlicherweise die darunterliegende Plattform, also Windows z.B.), musst du den Weg über Java gehen. --K:R-I)Z++ |
|
Profil || Suche |
|
002 13.01.2005, 13:59 McE-Madden |
Meinst du kannst mir mal ein bisschen hilfestellung geben in sachen zwischenspeicher in java. und vieleicht hast ja eine idee wie ich eine tabellenform da rein bekomme.. und im word oder excel weider raus bekomme.. --EJOT Productions |
|
Profil || Suche |
|
003 13.01.2005, 21:21 Kriz |
Hm, wird schwierig. Als Ansatzpunkt habe ich mal folgendes gemacht: Aus einer Exceltabelle alle benutzten Zellen markiert und kopiert, dann mal einfach in Notepad eingefügt. Er hat nur den reinen Text kopiert und dann mehr oder weniger so wieder versucht als Text einzufügen. Das Problem ist die Formatierung, wenn du beispielsweise aus einer JTable die Zellen markierst und kopierst! Zwischen zwei Spalten muß als Trennzeichen ein Tabulator genommen werden und zwischen zwei Zeilen ein normales Carriage Return (+ Linefeed ?). So scheint sowas locker flockig über das Clipboard transportabel zu sein. Mehr kann ich dazu leider nicht sagen als: Ausprobieren... --K:R-I)Z++ |
|
Profil || Suche |
|
004 14.01.2005, 13:33 McE-Madden |
was ist echt ein schöne idee zur lösung der formatierung.. EJOT Productions |
|
Profil || Suche |
|
005 18.01.2005, 09:43 McE-Madden |
also meinen nachforschungen zu folge weiß ich jetzt wie ich sachen in die Zwischenablage kopiere... das ding ist.. die zwischenablage benutzt mehrere formate die je nach zweck unterschiedlich sind.. für einen stinknormalen Text ist also das Format 1 gesetzte.. wenn du jetzt allerding das passend wie eine tabelle für Excel behandeln willst, dann kommt noch das format 46043 oder so dazu.. (die zahl stimmt nicht) meine frage jetzt: ich hoffe mir kann da jemand helfen. EJOT Productions |
|
Profil || Suche |
|
006 18.01.2005, 19:20 HammerBlade |
Hast du dir mal die >Java-API-Docs in Sachen Clipboard< angesehen? Da steht alles drin was du wissen musst. Und zu der Sache mit den Formaten des Clipborads. Java ist platform unabhängig, d.h. Java unterstützt keine spezielle Mirco$oft-Format, sondern nur allgemeine OS-unabhängige Formate (heißen unter Java Flavor), aber das seht auch alles in den Docs. Du wirst wahrscheinlich deine Daten die du c&p'en willst von Hand passen formatieren müssen. Mal was anderes... Willst du zwischen Windows und Java c&p'en oder nur von Java nach Java? Denn da musst du sicherlich auch noch einiges beachten. Wenn du aber nur innerhalb deiner JTable c&p'en willst, würde ich das nicht mit dem Clipboard machen. Dafür würde ich mit eine Art Fake-Clipboard machen, dass nur dein spezielles JTabel-Cell-Data-Format kann, und das Handling für Ctrl+C und Ctrl+V in Java overriden. Dann brauchts du dich nicht mit den Formaten des Clipboards herumschlagen. Edit 1: Die Formate des Clipboards haben nichts z.B. mit der Formatierung eines Textes oder so zu tun (nur um mit dieser Vorstellung über die Formate aufzuräumen, die du zu haben scheinst), sondern mit der Bedeutung des Inhalts. Windows kenn folgende Clipboard-Formate:
Wenn man z.B. in Notepad Text kopiert (ins Clipboard einfügt) und dann in Word einfügt, weiss Word aufgrund des Formats des Clipboards (das vorher von Notepad auf CF_TEXT gesetzt wurde), dass es die Bytes im Clipboard als Text interpretieren sollte. Wenn man nun aber aus Paint ein Bitmap kopiert und es in Word einfügt, weiss Word hier auch wieder aufgrund des Formats (CF_BITMAP) das es die Bytes im Clipboard als Bitmap interpretiren sollte. Wenn man nun versucht ein Bitmap aus Paint nach Notepad zu c&p'en passiert nichts, den Notepad weiss aufgrund des Formats (CF_BITMAP), dass es mit den Bytes im Clipborad nichts anfangen kann. Soweit ich das den Java-API-Docs entnehmen kann gibt es unter Java folgende abstakte Formate, welche über MIME-Types verwaltet werden:
Edit 2: Wie Kriz schon richtig angemerkt hat kann man den Inhalt einer Excel-Tabelle in Notepad c&p'en, d.h. Excel nutzt als Clipboard-Format CF_TEXT. Das ist vorteilhaft für dich, denn du brauchst dir keine Sorge um komplexe Formatumwandlungen machen, sondern benutzt unter Java einfach TextType. --"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 18.01.2005 um 20:07 von HammerBlade bearbeitet. |
|
Profil || Suche |
|
007 19.01.2005, 09:24 McE-Madden |
ich habe mir ein programm geschrieben , dass mir den inhalt eines clipboards textformatierung anzeigt und dessen formate.. wenn ich wie du sagst aus meiner java application die tabelle kopiere kommt 1 2 3 usw.. zusätzlich sind ein paar formate gesetzt die nicht gesetzt sind wenn ich nur eine textzeile kopiere.. aber okay wenn java sagt es hat nur die 4 dinger da, versteh ich immernoch ned, wo ich da jetzt dieses CF_TEXT angeb, weil des
EJOT Productions Dieser Beitrag wurde am 19.01.2005 um 09:24 von McE-Madden bearbeitet. |
|
Profil || Suche |
|
008 19.01.2005, 10:58 HammerBlade |
Nein, das stinkt nicht, sondern macht es einfacher. Ich hab mal eben eine bissl Code zusammengeschrieben, der Daten (einfachen Text, keine komplizierten Sachen) aus dem Clipboard lesen und schreiben kann. Da nach deiner Aussage JTable's ihnren Inhalt (fast) genausso strukturieren wie Exceltabellen ist das Austauschen von Daten zwischen den Beiden eine Kleinigkeit. Textstruktur: Excel
Bespielcode:
"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 19.01.2005 um 11:48 von HammerBlade bearbeitet. |
|
Profil || Suche |
|
009 21.01.2005, 09:13 McE-Madden |
hui okay danke! wegen word genau das iss ja mein problem.. ich kenn des mit den windowsformaten und da gibts 2 die word dann auch richtig interpretiert.. aber mit java iss das nich so möglich. ich versuch jetzt schon 2 wochen dem problem auf den grund zu gehen aber ich kriege nichts praktisches zamm. --EJOT Productions |
|
Profil || Suche |
|
010 21.01.2005, 15:52 HammerBlade |
Ich hab mir mal angesehen, welche Formate für's Clipborad gesetzt sind, wenn man zwischen Word und Excel Tabellen oder auch nur einfachen Text c&p't: Ausser den Standardformaten für Text (CF_TEXT, CF_OEMTEXT, CF_UNICODETEXT) werden durch Word und Excel auch noch ca. 10 verschiedene Customformate gesetzt. Diese haben ID's die umgefähr zwischen 49100 und 49300 liegen. Unter Windows kann man sich mit UINT RegisterClipboardFormat(LPCTSTR lpszFormat) eigene Clipboardformate definieren. Genau das machen Word und Excel. Mit Java hast du keine Chance an diese Customformate heranzukommen oder welche zu definieren. Java benutzt intern ein ähnliches System, nämlich MIME-Types, für Customformate bzw. um die Formatgruppen (Text, Image, Filehandle, ...) weiter zu unterteilen, z.B. text/plain oder text/html. Aber Windows Customformate gehen nicht in die Java MIME-Types ein und Java MIME-Types nicht in die Windows Customformate. Fazit: Um das Java-Word-Problem zu lösen, müsste man die native (platformabhängige) API der JVM mit einer Library (selbstentwickelt?) erweitern, die Java die Möglichkeit gibt mit dem Customformaten unter Windows zu interagieren. Imo ist das sehr aufwendig, nicht trivial und lohnt sich nicht. --"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 21.01.2005 um 15:53 von HammerBlade bearbeitet. |
|
Profil || Suche |
|
011 28.01.2005, 10:26 McE-Madden |
okay ich danke dir! nun muss ich eine andere lösung finden.. entweder auf c++ umbasteln oder den tastendruck [strg][c] simulieren.. also das java programm gaukelt dem Computer vor dass [strg][c] gedrückt wird.. währ auch ne lösung, weil dann versteht word wenigesten ansatzweise dass es ne tabelle ist. bin auf antworten gespannt. --EJOT Productions |
|
Profil || Suche |
|
012 28.01.2005, 14:20 HammerBlade |
Warum willst du denn Strg+C simulieren? Das hilft dir nicht bei deinem Problem mit den Clipboardformaten, die Word sagen, dass der Inhalt des Clipboards als Tabelle zu interpretieren ist. Du kannst entweder dein Progamm in C++ programmieren, oder ein C++ Programm als "Zwischenhändler" zwischen Java und dem Clipboard benutzten. Im Detail: Dein Java-Programm interagiert nicht direkt mit der Clipboard, sondern es interagiert mit dem C++-Programm, welches dann mit dem Clipboard interagiert und auch die richtigen windowsspezifichen Formate setzet, damit Word den Inhalt auch als Tabelle interpretiert. --"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 28.01.2005 um 14:30 von HammerBlade bearbeitet. |
|
Profil || Suche |

