Šis raksts ļaus jums labi izprast, kā nosūtīt un iegūt informāciju no Java starpliktuves. Jūs arī uzzināsiet, kā rīkoties ar dažādiem pieejamajiem aromātiem. Visbeidzot, mēs aplūkosim vairākas starpliktuvju personības un to, kā tās nodrošina atbalstu vairāk nekā vienam datu aromātam.
Java piedāvā divu veidu starpliktuves: lokālo un sistēmas. Vietējie starpliktuves ir pieejami tikai virtuālajā mašīnā, kurā darbojas jūsu sīklietotne vai lietojumprogramma. Tomēr atšķirībā no dažām operētājsistēmām, kas ierobežo tikai vienu starpliktuvi, Java ļauj jums izveidot tik daudz vietējo starpliktuvju, cik vēlaties. Piekļuve noteiktai vietējai starpliktuvei ir tikpat vienkārša kā atsauce uz to pēc nosaukuma.
Sistēmas starpliktuves ir tieši saistīti ar vienaudžu operētājsistēmu, ļaujot jūsu lietojumprogrammai pārsūtīt informāciju starp visām lietojumprogrammām, kas darbojas šajā operētājsistēmā. Viens sistēmas starpliktuves izmantošanas trūkums ir tas, ka jūs varat pārsūtīt tikai teksta datus. Citu veidu objektus sistēmas starpliktuve neatbalsta. Ar lielu veiksmi šis jautājums tiks apskatīts nākamajā JDK laidienā.
Pirms dodamies tālāk, apskatīsim visas klases, kas iesaistītas manipulācijās ar starpliktuvi. Šīs klases, kas uzskaitītas zemāk esošajā tabulā, ir visas java.awt.datatransfer iepakojums.
Visu klašu saraksts paketē java.awt.datatransferNosaukums | Tips | Apraksts |
Starpliktuve | Klase | Nodarbojas ar visu, kas ir nododams |
Starpliktuve Īpašnieks | Saskarne | Katrai klasei, kas nodarbojas ar starpliktuvi, ir jāievieš šī saskarne. Šo interfeisu izmanto, lai paziņotu, kad sākotnēji starpliktuvē ievietotie dati ir pārrakstīti |
Dataflavor | Klase | Pārstāv visus datu tipus, kurus var pārsūtīt |
StringSelection | Klase | Viena veida pārsūtāms, kas tiek piegādāts kopā ar Java |
Nododams | Saskarne | Objektu iesaiņotājs, kas nodots starpliktuvē |
Neatbalstīts aromāts Izņēmums | Klase | Izņēmums, ko rada pārsūtāms neatbalstīts datu aromāts |
Vairāk par starpliktuves nodarbībām
Iesim dziļāk mūsu izpētē java.awt.datatransfer
paketi, detalizēti apskatot katru klasi.
Starpliktuves klase
The Starpliktuve
klase ir jūsu saite uz piekļuvi starpliktuvei. Tas ietver trīs metodes, kas noteiktas šajā tabulā:
Metode | Apraksts |
Virkne getName () | Iegūstiet starpliktuves nosaukumu |
void setContents (pārsūtāms, starpliktuves īpašnieks) | Iestatiet starpliktuves saturu kopā ar īpašnieka objektu |
Pārsūtāms getContent (objekts) | Iegūstiet starpliktuves saturu pārsūtāma objekta veidā. Kā parametrs nodotais objekts ir īpašnieks |
Trīs Starpliktuve
klases metodes ļauj iepriekš nosaukt starpliktuvi, nosūtīt tai informāciju vai iegūt no tās informāciju. Piekļuve sistēmas starpliktuvei vai vietējā starpliktuves izveide ir atšķirīga un prasa mazliet vairāk diskusiju. Lai piekļūtu sistēmas starpliktuvei, piešķiriet sistēmas starpliktuvē atsauci uz Starpliktuve
klase, piemēram:
Starpliktuves starpliktuve = getToolkit () .getSystemClipboard ();
No otras puses, lai izveidotu vietējo starpliktuvi, jums jāizveido tikai Starpliktuve
objekts ar nosaukumu, kuru vēlaties tam piešķirt, piemēram:
Starpliktuves starpliktuve = new Starpliktuve ("Mana pirmā starpliktuve");
Piekļuve sistēmas starpliktuvei vai vietējā starpliktuves izveidošana ir atšķirīga, bet vienkārša.
ClipboardOwner saskarne
Tā kā Java ir daudzplatforma valoda un operētājsistēmas izturas atšķirīgi attiecībā pret starpliktuvēm, Java valodas autoriem bija jāizdomā mehānisms, kā tikt galā ar smalkām atšķirībām. Tas ir iemesls Starpliktuve Īpašnieks
interfeiss. Tās vienīgā funkcija ir informēt starpliktuves īpašnieku, kad viņa datus pārraksta kāds cits. Tas var arī signalizēt lietojumprogrammu, kad atbrīvot ar datiem saistītu resursu.
Reālā lietojumprogrammā zaudēta īpašumtiesības
metodi var izmantot, lai iestatītu karodziņu, kas informē jūsu lietojumprogrammu par datu pieejamību starpliktuvē. Lai arī Microsoft Word nav rakstīts Java valodā, tas ir labs šī mehānisma piemērs lietojumprogrammā. Ikreiz, kad kaut ko ievietojat Word starpliktuvē un pēc tam aizverat, tiek parādīts dialoglodziņš, kas informē jūs, ka dati ir starpliktuvē. Pēc tam jums tiks jautāts, vai vēlaties atstāt datus starpliktuvē.
Programmas ieviešana Starpliktuve Īpašnieks
saskarne ir samērā vienkārša, jo ir tikai viena metode, kas jāievieš. Šī metode liks jūsu programmai atteikties no starpliktuves īpašumtiesībām.
DataFlavor klase
The DataFlavor
klase tiek izmantota, lai attēlotu tips objekta. Jūs neaprobežojaties ar vienu datu garšu (vai veidu) katram objektam. Jūsu priekšmetiem, tāpat kā mums, var būt vairākas personības! Piemēram, attēlu klasi var attēlot kā Java klasi vai kā bitu masīvu (GIF, JPEG un tā tālāk). Patiesībā a DataFlavor
klase ir MIME tipa iesaiņotājs. MIME standarts ir plašs, tāpēc datiem, kurus var pārsūtīt uz starpliktuvi, praktiski nav ierobežojumu. (Diskusija par MIME standartu ir ārpus šī raksta darbības jomas, taču papildinformāciju varat atrast sadaļā Resursi.)
Kā datu garšas piemēru jūs atradīsit, ka StringSelection
klasei ir divas garšas, pamatojoties uz MIME tipiem. Īstenošanā ir "application / x-java-serialized-object", bet otrais ir "text / plain; charset = unicode". Faktiski šī ieviešana mums norāda, ka mēs varam izgūt tekstu no starpliktuves kā Stīga
klase (application / x-java-serialized-object
) vai vienkārša teksta veidā (teksts / vienkāršs; charset = unicode
).
Ir divi veidi, kā izveidot DataFlavor
. Jūs varat rakstīt:
public DataFlavor (RepresentationClass, String humanRepresentationName)
Šis konstruktors izveidos jaunu datu aromātu, kas pārstāv Java klasi. Atgriezās DataFlavor
būs reprezentācijas klase = reprezentācijas klase
un a mimeType = application / x-java-serialized-object
. Kā piemēru šādi izveidotu DataFlavor
priekš java.awt.Button
:
DataFlavor (Class.forName ("java.awt.Button"), "AWT poga");
Tagad šis otrais konstruktors
public DataFlavor (virknes mimeType, String humanRepresentationName)
konstruēs a DataFlavor
izmantojot a MimeType
. Atgriezās DataFlavor
balstīsies uz MimeType
. Ja MimeType
ir application / x-java-serialized-object
, tad rezultāts būs tāds pats kā tad, ja jūs izsauktu iepriekšējo konstruktoru. Neskatoties uz to, atgriezās DataFlavor
būs representationClass = InputStream un mimeType = mimeType
. Piemēram, šāds zvans radīs teksta garšu:
public DataFlavor ("text / plain; charset = unicode", "Unicode");
Šajā tabulā ir parādītas metodes DataFlavor
klasē.
Metodes | Apraksts |
būla vērtība ir vienāda (DataFlavor) | Pārbaudiet, vai piegādātais DataFlavor ir vienāds ar DataFlavor, ko pārstāv šī klase |
Virkne getHumanPresentableName () | Atgrieziet cilvēka pārstāvamo nosaukumu formātam, ko pārstāv šis DataFlavor |
void setHumanPresentableName (virkne) | Šim DataFlavor iestatiet cilvēka attēlojuma nosaukumu |
Virkne getMimeType () | Iegūstiet MIME tipa virkni, ko pārstāv šī DataFlavor |
Klase getRepresentationClass () | Atgrieziet klasi, kas pārstāv šo klasi |
Pārsūtāmā saskarne
The Nododams
interfeiss jāievieš visām klasēm, kuras vēlaties nosūtīt uz starpliktuvi, līdz ar to Starpliktuve
klase sapratīs tikai tās klases, kuras ir iesaiņojusi Nododams
interfeiss. The Nododams
saskarni veido trīs metodes:
Metodes | Apraksts |
DataFlavor getTransferDataFlavor () | Atgrieziet DataFlavor masīvu, kas apzīmē objektu |
boolean isDataFlavorSupported (DataFlavor) | Pārbaudiet, vai tiek atbalstīts piegādātais DataFlavor |
Objekts getTransferData (DataFlavor) | Atgrieziet objektu, ko pārstāv piegādātais DataFlavor |
Tas noslēdz mūsu ceļojumu pa visām klasēm, kas iesaistītas starpliktuves apstrādē. Mēs esam redzējuši, ka, lai piekļūtu starpliktuvei, mums ir vai nu jāizveido Starpliktuve
objektu vai iegūt atsauci uz sistēmas starpliktuvi. Tā kā starpliktuve pieņem tikai veida objektus Nododams
, objektam, kuru vēlaties nosūtīt uz starpliktuvi, ir jāievieš šī saskarne. Visbeidzot, visiem starpliktuves objektiem ir garšas, kuras attēlo DataFlavor
klase, kas patiesībā ir MIME tipu iesaiņotājs.
Nākamajās sadaļās mēs praktiski pielietosim apgūto.
Starpliktuves izmantošanas recepte
Tas, kā šīs dažādās klases piekļūst starpliktuvei, var būt mulsinoša. Par laimi ir vienkārša recepte, kas ietver šādas darbības:
1. solis. Izveidojiet klasi ar nosaukumu xxxxSelection. Šeit xxx jānosauc veids, ko pārstāv šī garša. Piemēram, ImageSelection
būtu labs nosaukums attēla aromātam. Šī vārdu piešķiršanas kārtība, protams, ir tikai ieteikums. Es ievēroju izveidoto konvenciju par lietošanu ar StringSelection
JDK, bet jūs varat nosaukt šo klasi kā vien vēlaties. Ir svarīgi atcerēties, ka šim objektam ir jāīsteno Nododams
un Starpliktuve Īpašnieks
saskarnes. Ja plānojat pārsūtīt tekstu, StringSelection
tā vietā jāizmanto klase.
2. solis. Definējiet klasi, lai piekļūtu starpliktuvei. Lai piekļūtu vietējam starpliktuvei, izmantojiet šādu zvanu: Starpliktuves starpliktuve = jauns starpliktuve ("nosaukums")
. Lai piekļūtu vienaudžu operētājsistēmas starpliktuvei, izmantojiet šo zvanu: Starpliktuves starpliktuve = getToolkit () .getSystemClipboard ()
.
3. solis. Iestatiet starpliktuves saturu. Lai to izdarītu, izmantojiet setContent
metodi Starpliktuve
klase, kur pirmais parametrs ir objekts, kas realizē a Nododams
(xxxxSelection
klase, kas izveidota 1. solī), un otrais parametrs ir atsauce uz klasi, kas izsauc šo metodi.
4. solis. Iegūstiet starpliktuves saturu. Izmantojiet getContent
metodi Starpliktuve
klasē. Šī metode atgriezīs tipa klasi Nododams
.
5. solis. Izpildiet “izgriešanas operāciju”. Lai to izdarītu, dati ir manuāli jāizdzēš, kad tie ir nokopēti starpliktuvē. Java nenodrošina izgriešanas operācijas ieviešanu.
Pēc šīs īsās ekskursijas pa klasēm, kas saistītas ar manipulācijām ar starpliktuvi, mēs ievērosim ieteikto recepti, lai uzrakstītu vienkāršu sīklietotni, kas tekstu pārsūta uz sistēmas starpliktuvi.
Saraksts 1
Pārbaudīsim šo sīklietotni:
Saraksts 1
Šis ir 1. saraksta īpašo koda rindu skaidrojums.
9. rinda: Definējiet klasi sīklietotne
pagarināt Aplets
klasē un ieviest Starpliktuve Īpašnieks
interfeiss.
17. rindiņa: Definējiet starpliktuves objektu.
26. rindiņa: Iestatiet starpliktuves objektu uz vienaudžu operētājsistēmas starpliktuvi.
45. līdz 47. rinda: Šajā saskarnē ieviesiet vienīgo metodi. Šajā rakstā mēs neizmantojam zaudēta īpašumtiesības
metodi, bet vienkārši izdrukājiet ziņojumu konsolē. Varat eksperimentēt ar šo metodi, izmantojot šo sīklietotru, kopējot tekstu uz starpliktuvi un pēc tam nokopējot kaut ko citu no citas lietojumprogrammas. Jums vajadzētu redzēt zaudēto īpašumtiesību ziņojumu Java konsolē, jo datus, kas tika ievietoti starpliktuvē (izmantojot Java sīklietotni), cita programma pārrakstīja.
52. rinda: Definējiet klases klasi StringSelection
kas ievieš teksta datu garšu. Pēc tam mēs iegūstam avota teksta lauka saturu.
53. rinda: Iestatiet starpliktuves saturu uz fieldContent
klase, kuru mēs definējām iepriekšējā rindā. Ievērojiet, ka mums jāpiegādā šīs klases īpašniekam, šajā gadījumā, šī sīklietotne.
61. rinda: Definējiet objekta tipu Nododams
lai saņemtu starpliktuves saturu.
63. rinda: Apstipriniet divas lietas. Pirmkārt, vai starpliktuve ir tukša? Otrkārt, vai starpliktuves saturs ir īsts aromāts? Šajā gadījumā mēs meklējam stringFlavor
.
67. rinda: Iegūstiet starpliktuves saturu virknes mainīgajā. Lai to izdarītu, mēs saucam getTransferData
metode ar nepieciešamo garšu. Šajā gadījumā mums ir nepieciešams a DataFlavor.stringFlavor
tips.
69. rinda: Iestatiet mērķa teksta lauka saturu starpliktuves saturam.
Varat eksperimentēt ar šo sīklietotni, pārsūtot tekstu starp šo sīklietotni un citu Java sīklietotni vai starp Java sīklietotni un vietējo programmu, piemēram, Notepad, tiem, kas darbojas ar Microsoft Windows.
2. saraksts
Otrajā piemērā mēs uzrakstīsim sīklietotni, kas kopē attēlu uz starpliktuvi. Attēls īstenos savu garšu.
2. saraksts
Šis ir 2. saraksta īpašo koda rindiņu skaidrojums.
27. rindiņa: Izveidojiet starpliktuves objektu, kas atsaucas uz vietējo starpliktuvi.
41. rinda: Iestatiet sourImage
kontrolēt Image.gif
.
44. līdz 50. rinda: Īstenot zaudēta īpašumtiesības
metodi. Mēs vienkārši izdrukājam ziņojumu Java konsolē.
6. rinda: Izveidojiet ImageSelection
objekts, pamatojoties uz attēlu sourceImage
kontrole.
57. rinda: Iestatiet starpliktuves saturu ar ImageSelection
objekts.
66. rinda: Iegūstiet starpliktuves saturu.
68. rinda: Pārliecinieties, ka saturs nav tukšs un ka tiek atbalstīts meklētais aromāts.
71. rinda: Iegūstiet datus atbilstošā aromātā.
72. rinda: Iestatiet galamērķisAttēls
kontrolēt tikko iegūto saturu.
90. līnija: Definējiet ImageSelection
klasē.
93. līnija: Definējiet masīvu DataFlavor
sauca atbalstītsGaršas
ar vienu elementu (imageFlavor
).
102. līnija: Izveidojiet attēla garšu. Izveidotās garšas pamatā ir java.awt.Image
ar attēlojuma nosaukumu "Attēls".
111. līdz 130. rinda: Īstenot Nododams
metodes.
123. rinda: Izmantojot šo metodi, atgrieziet starpliktuves saturu.
125. līnija: Apstipriniet garšu. Ja pieprasītais aromāts tiek atbalstīts, attēla objekts tiek atgriezts. Pretējā gadījumā tiek izmests izņēmums.
1. sarakstā mēs izmantojām noklusējuma datu garšu (StringSelection
), lai tekstu nosūtītu uz sistēmas starpliktuvi. 2. sarakstā mēs devāmies tālāk, ieviešot paši savu datu garšu java.awt.Image
.