Abstrakti ikkunatyökalusarja - Abstract Window Toolkit
Abstract Window Toolkit ( AWT ) on Java alkuperäisen alustasta riippuvainen ikkunointi , grafiikka ja käyttöliittymä widget työkalupakki , edellisen Swing . AWT on osa Java Foundation Classes (JFC) - standardin API aikaansaamiseksi graafinen käyttöliittymä (GUI) on Java-ohjelma. AWT on myös GUI -työkalupakki useille Java ME -profiileille. Esimerkiksi Connected Device Configuration profiilit vaatii Java runtimes siitä matkapuhelimiin tukemaan Abstract Window Toolkit.
Historia
Kun Sun Microsystems julkaisi ensimmäisen kerran Javan vuonna 1995, AWT-widgetit antoivat pienen abstraktion taustalla olevan alkuperäisen käyttöliittymän yli. Esimerkiksi AWT -valintaruudun luominen johtaisi siihen, että AWT kutsuu suoraan taustalla olevaa alkuperäistä aliohjelmaa, joka loi valintaruudun. Microsoft Windowsin valintaruutu ei kuitenkaan ole täsmälleen sama kuin valintaruutu Mac OS -käyttöjärjestelmässä tai erityyppisissä Unix -laitteissa . Jotkut sovelluskehittäjät pitävät tätä mallia parempana, koska se tarjoaa korkean tarkkuuden taustalla olevaan alkuperäiseen ikkunatyökalupakettiin ja saumattoman integroinnin natiivisovelluksiin. Toisin sanoen AWT: llä kirjoitettu graafinen käyttöliittymäohjelma näyttää alkuperäiseltä Microsoft Windows -sovellukselta, kun sitä käytetään Windowsissa, mutta sama ohjelma näyttää alkuperäiseltä Apple Macintosh -sovellukselta, kun sitä käytetään Macissa jne. Jotkut sovelluskehittäjät eivät kuitenkaan pidä tästä mallista, koska he haluavat sovellustensa näyttävän täsmälleen samalta kaikilla alustoilla.
Vuonna J2SE 1.2 The Swing työkalupakki pääosin korvattu AWT n widgetit. Sen lisäksi, että Swing tarjoaa monipuolisempia käyttöliittymäohjelmia, se piirtää omat widgetinsä ( kutsumalla Java 2D: n avulla paikallisgrafiikan alijärjestelmän matalan tason aliohjelmiin) sen sijaan, että luottaisi käyttöjärjestelmän korkean tason käyttöliittymämoduuliin. Swing tarjoaa mahdollisuuden käyttää joko alkuperäisen alustan "ulkoasua" tai eri alustojen ulkoasua ("Java Look and Feel"), joka näyttää samalta kaikissa ikkunointijärjestelmissä.
Arkkitehtuuri
AWT tarjoaa kaksi API -tasoa :
- Yleinen käyttöliittymä Javan ja alkuperäisen järjestelmän välillä, jota käytetään ikkunointiin , tapahtumiin ja asettelunhallintaan . Tämä sovellusliittymä on Java GUI -ohjelmoinnin ytimessä, ja sitä käyttävät myös Swing ja Java 2D . Se sisältää:
- Käyttöliittymä natiivin ikkunajärjestelmän ja Java -sovelluksen välillä;
- GUI -tapahtumaosajärjestelmän ydin ;
- Useita asettelupäälliköitä ;
- Liitäntä syöttölaitteisiin , kuten hiireen ja näppäimistöön ; ja
java.awt.datatransferPaketti käytettäväksi leikepöydälle ja vedä ja pudota .
- Perussarja graafisia käyttöliittymiä, kuten painikkeet, tekstiruudut ja valikot. Se tarjoaa myös AWT Native Interface , joka mahdollistaa tekee kirjastot koottu koodiksi kiinnittää suoraan AWT
Canvasesine piirustus pinta.
AWT tuo sovelluksiin myös joitakin korkeamman tason toimintoja, kuten:
- Pääsy järjestelmäalustalle tukijärjestelmissä; ja
- Mahdollisuus käynnistää joitakin työpöytäsovelluksia, kuten verkkoselaimia ja sähköpostiohjelmia Java -sovelluksesta.
AWT tai Swing eivät ole luonnostaan langankestäviä . Siksi koodin, joka päivittää graafisen käyttöliittymän tai käsittelee tapahtumia, pitäisi suorittaa tapahtumien lähetyskierteessä . Jos näin ei tehdä, seurauksena voi olla umpikuja tai kilpailutilanne. Tämän ongelman ratkaisemiseksi SwingWorker- apuohjelmaluokka sallii sovellusten suorittaa aikaa vieviä tehtäviä tapahtumien lähetyskierteen käyttäjän vuorovaikutustapahtumien jälkeen.
AWT- ja Swing -komponenttien sekoittaminen
Jos AWT-komponentista on Swing-versio, se alkaa J- ja sitä tulee käyttää yksinomaan AWT-version korvaamiseksi. Käytä esimerkiksi Swingissä vain JButton, älä koskaan Button -luokkaa. Kuten edellä mainittiin, AWT-ydinluokkia, kuten Väri ja Fontti, käytetään edelleen Swingissä sellaisenaan.
Kun piirrät Swingissä, käytä JPanelia ja ohita paintComponent (Grafiikka g) AWT paint () -menetelmien sijasta.
Ennen Java 6 -päivitystä 12 Swing- komponenttien ja AWT-peruswidgetien sekoittaminen aiheutti usein ei-toivottuja sivuvaikutuksia, ja AWT-widgetit ilmestyivät Swing-widgetien päälle niiden määritetystä z-järjestyksestä riippumatta . Tämä ongelma johtui siitä, että tekee arkkitehtuuria kahden widget työkaluja oli hyvin erilainen, vaikka Swing lainanotto raskaansarjan top kontit maasta AWT.
Vuodesta Java 6 Update 12 , on mahdollista sekoittaa Swing AWT widgetit ilman z-järjestyksen ongelmia.
Esimerkki
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class AppletApplication extends Applet implements WindowListener {
public static void main(java.lang.String[] args) {
AppletApplication applet = new AppletApplication();
Frame w = new Frame("Applet");
w.addWindowListener(applet);
w.add("Center", applet);
w.setSize(50, 50);
w.setVisible(true);
applet.init();
applet.start();
}
public void paint(Graphics g) {
super.paint(g);
g.drawString("Hello World", 10, 10); // Upper left corner
}
public void windowClosing(WindowEvent e) {
System.exit(0); // Exit the application when the window is closed
}
// Required methods
public void windowActivated(WindowEvent e) { }
public void windowClosed(WindowEvent e) { }
public void windowDeactivated(WindowEvent e) { }
public void windowDeiconified(WindowEvent e) { }
public void windowIconified(WindowEvent e) { }
public void windowOpened(WindowEvent e) { }
}
Toteutus
Koska AWT on silta taustalla olevaan natiiviin käyttöliittymään, sen käyttöönotto uudessa käyttöjärjestelmässä voi vaatia paljon työtä, varsinkin jos siihen liittyy jokin AWT-käyttöliittymän widget, koska jokainen niistä edellyttää, että sen natiivitoverit kehitetään tyhjästä.
Uusi projekti, Caciocavallo , on luotu, ja se tarjoaa OpenJDK -pohjaisen Java -sovellusliittymän, joka helpottaa AWT -toteutusta uusissa järjestelmissä. Projekti on onnistuneesti ottanut käyttöön AWT -widgetit Java2D: n avulla . Kaikki tarvittavat ydin-JDK-muutokset on sittemmin siirretty OpenJDK 7: een , mikä tarkoittaa, että Javaa voidaan nyt käyttää muussa grafiikkapinossa kuin yhdessä virallisen JDK: n ( X Window System , OpenGL tai DirectX ) tarjoamissa grafiikkapinoissa. ulkoiseen kirjastoon ja joidenkin järjestelmän ominaisuuksien asettamiseen. Directfb taustaosa Caciocavallo on kehitteillä, kuten on HTML5 backend; tavoitteena on ottaa olemassa olevat Swing -sovellukset käyttöön ilman Java -tukea tavallisina web -sovelluksina, jotka toimivat verkkopalvelimella.
Katso myös
Viitteet
Tämä artikkeli perustuu materiaaliin, joka on otettu Free On-line Dictionary of Computingista ennen 1. marraskuuta 2008 ja sisällytetty GFDL : n version 1.3 tai uudemman "lisensointiehtoihin" .
Ulkoiset linkit
-
java.awt(AWT Javadoc -sovellusliittymän dokumentaatio) - AWT -dokumentaatio
- AWT/Swing
- java.awt
