java swing - tutgrako/2008/luennot/swing_2008.pdf · java swing “the swing toolkit ... jtable,...

48
Java Swing Juha Järvensivu [email protected] 2008

Upload: vuongnhan

Post on 10-Apr-2018

261 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Java Swing

Juha Jä[email protected]

2008

Page 2: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Sisällys

• Java ympäristöt• Java kirjastot

– Java Foundation Classes (JFC)• Hello Java• Swing-kirjasto• Grafiikan piirto• Tapahtumankäsittely

Page 3: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Java ympäristö

• J2ME (Java Platform, microedition)– Mobiilisovellukset

• J2SE (Java Platform, standard edition)– Työpöytäsovellukset

• J2EE (Java Platform, enterprise edition)– Web ja palvelin-sovellukset (Web Service,

Java Servlet, Java Beans…)

Page 4: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Javan versionti

• Java JDK 1.0• Java JDK 1.1• Java JDK 1.2 Java 2 SDK 1.2• Java 2 SDK 1.3• Java 2 SDK 1.4• Java 2 SDK 1.5 Java 2 JDK 5.0• Java SE 6 (Java standard edition SDK)

Page 5: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

JDK vs JRE

• JRE (Java Runtime Environment)– Sisältää Java virtuaalikoneen ja muut

sovellusten ajamiseen tarvittavat komponentit– Ei sisällä sovelluskehitykseen tarvittavia

työkaluja• JDK (Java Development Kit)

– Sisältää Java virtuaalikoneen ja muut JRE:nmukana tulevat komponetit

– Sisältää lisäksi sovelluskehitykseen tarvittavattyökalut kuten kääntäjä, debuggeri, jne.

Page 6: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Eclipse

• Graafinen kehitystyökalu Java-sovelluksille

• www.eclipse.org

Page 7: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Java Platform (J2SE)

Page 8: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Java Platform (J2SE)

Page 9: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Java Foundation Classes (JFC)• Abstract Window Toolkit (AWT) - APIs that enable programs to

integrate into the native desktop window system, including APIs forDrag and Drop.

• Java 2D - APIs to enable advanced 2D graphics, imaging, text andprinting.

• Swing GUI Components - APIs that extend the AWT to provide arich, extensible GUI component library with a pluggable look andfeel.

• Accessibility - APIs and assistive technologies are for ensuring anapplication is accessible to users with disabilities and meetsgovernment requirements for accessibility.

• Internationalization - All JFC technologies include support forcreating applications that can interact with users around the worldusing the user's own language and cultural conventions. Thisincludes the Input Method Framework API.

Lähde: http://java.sun.com/products/jfc/overview.html#1

Page 10: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Abstract Window Tookit (AWT)“The java.awt package contains the base-level

APIs that allow Java applications to interact withthe native window system on each platform.”

“These APIs include support for creating andmanaging windows (discrete areas on thedisplay), getting input events, and renderingsimple graphics. The AWT also includes a set ofsimple GUI components that map directly to thenative widget counterparts on the givenplatform.“

Lähde: http://java.sun.com/products/jfc/overview.html#1

Page 11: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Java Swing“The Swing toolkit is a fully-featured UI component

library implemented entirely in the Javaprogramming language.”

“The J2SE platform's javax.swing package usesthe windowing functionality of AWT and therendering capabilities of the Java 2D API toprovide sophisticated and highly extensible UIcomponents that comply with the JavaBeansspecification.”

Lähde: http://java.sun.com/products/jfc/overview.html#1

Page 12: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Heavyweight component

• Komponteillanatiivitoteutus

• Varaavat omanikkunaresurssin

• Uusien komponenttienperiyttäminenhankalaa

Page 13: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Lightweight component

• Komponentittoteutettu javalla

• Käyttävätisäntäkomponentinikkunaresurssia

• Uusien komponenttientoteuttaminen helppoa

Page 14: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

AWT vs SWING

• AWT– Heavyweight

komponentteja– Ikkunat aina

suorakulmionmuotoisia

– Komponentit erinäköisiä eriympäristöissä

– Natiivitoteutus

• SWING– Lightweight

komponentteja– Tuki läpinäkyville

pikseleille– Pluggable look and

feel– Java-toteutus

Älä käytä samassa sovelluksessa sekaisin AWT (esim Button)ja SWING (esim JButton) komponentteja!

Page 15: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Awt-Swing• Swing on toteutettu AWT:n päälle ja se käyttää toteutuksessaan

AWT:n luokkia (Esim Graphics, MouseListener jne)• Swing ja AWT UI-komponentit toteutettu eri tavalla, joten ne eivät

sovellu käytettäväksi samassa ohjelmassa vaan on valittavakumpaa kirjastoa käyttää!

• Swing komponentit tunnistaa J-kirjaimesta nimen alussa (EsimJButton)

Page 16: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Heavyweight vs lightweightcomponent

Page 17: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Java Swing – UI components

JFrame, JDialog, JWindow, JInternalFrame,JApplet

Top-level window components

JPanel, JScrollPane, JSplitPane,JTabbedPane, JDesktopPane, JToolBar

Layout containers

JMenuBar, JMenu, JPopupMenu, JMenuItem,JCheckboxMenuItem, JRadioButtonMenuItem

Menu components

JTextField, JFormattedTextField,JPasswordField, JTextArea, JTextPane,JEditorPane

Text components

JTable, JTree, JList, JFileChooser,JColorChooser, JOptionPane

Complex data components

JLabel, JButton, JCheckBox, JRadioButton,JToggleButton, JComboBox, JScrollBar,JSeparator, JSlider, JSpinner, JProgressBar

Atomic controls

Page 18: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Pluggable look and feel• Native Windows Look and Feel

– Supported on Microsoftwindows only

• Native Mac Look and Feel– Supported on Mac only

• Java Look and Feel– Supported on all platforms

• Motif Look and feel– Supported on all platforms

Page 19: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Hello.java (CLI)/*** The HelloWorldApp class implements an application that* simply prints "Hello World!" to standard output.*/

class HelloWorldApp{

public static void main(String[] args){

System.out.println("Hello World!");}

}

Page 20: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Sovelluksen kääntäminen jaajaminen

// LähdekooditiedostoHelloWorldApp.java// Käännetään lähdekoodi tavukoodiksijavac HelloWorldApp.java// Käännetty tavukooditiedostoHelloWorldApp.class// Käynnistetään sovellusjava HelloWorldApp

Page 21: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Hello.java (GUI)import javax.swing.*;public class HelloWorldSwing {

private static void createAndShowGUI() {JFrame.setDefaultLookAndFeelDecorated(true);JFrame frame = new JFrame("HelloWorldSwing");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JLabel label = new JLabel("Hello World");frame.getContentPane().add(label);frame.pack();frame.setVisible(true);

}public static void main(String[] args) {

javax.swing.SwingUtilities.invokeLater(new Runnable() {public void run() { createAndShowGUI(); }

}}

}

Page 22: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Swing-kirjasto• javax.swing

– Sisältää käyttöliittymäkomponentit– JButton, JLabel, JTextField, JFrame jne.

• javax.swing.event– Tapahtumaluokat

• ActionEvent, KeyEvent, MouseEvent jne.– Rajapintaluokat

• ActionListener, KeyListener, MouseListener jne.– Adapteriluokat

• KeyAdapter, MouseAdapter, WindowAdapter

• javax.swing.plaf– Sisältää LookAndFeel toiminnallisuuden tarvitsemia luokkia

Page 23: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Swing-kirjasto

• java.awt.Graphics– Grafiikan piirton tarvittava luokka

• java.awt.Graphics.Graphics2D– Sisältää monipuolisempia piirtometodeja

• java.awt.geom– Sisältää geometrisia muotoja– Ellipse2D, Rectangle2D, Line2D

Page 24: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

JComponent

• Lightweight-komponenttien kantaluokka• Esim JButton

JComponent

AbstractButton

JButton JToggleButton

JCheckBox JRadioButton

Page 25: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Koosteoliot (Container)

• Javassa UI-komponentit lisätään Container-oliohin (vrt. .NET ja absoluuttiset koordinaatit)

• Komponenttien sijainti näytöllä riippuu käytetystäLayout-managerista

• JPanel– lightweight-komponenttien koosteolio

Page 26: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Container

Container LayoutManager

Component Component Component

Page 27: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

FlowLayout

• Yksinkertaisin layoutmanageri• Asettelee komponentit järjestyksessä

vasemmalta oikealle ja ylhäältä alas• JPanel-luokka käyttää oletuksena• Käyttää komponenttien piirtoon niille

määritettyä oletuskokoa (preferredSize)

Comp1 Comp2 Comp3 Comp4Comp5 Comp6

Page 28: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

BorderLayout

• Jakaa ikkunan viiteen alueeseen• Ikkunaa suurennettaessa CENTER-alueen

komponentti kasvaa• Oletuksena ContentPane-komponentilla

CENTER LINE_ENDLINE_START

PAGE_START

PAGE_END

Page 29: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

GridLayout• Kaikki komponentit ovat saman kokoisia• Ikkunan koon muutos muuttaa myös komponenttien kokoja• Komponentit lisätään oletuksena rivi kerrallaan vasemmalta oikealle

http://java.sun.com/docs/books/tutorial/uiswing/layout/grid.html

Page 30: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

GridBagLayout

Page 31: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

GridBagLayout

Page 32: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Top-level container• JFrame• JDialog• JInternalFrame

Page 33: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

JFrame layers

Page 34: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

JFrame layers• Root Pane (Juuriruutu)

– Osat: Glass pane, Layeredpane

– Ei yleensä tarvitse käsitelläsuoraan ohjelmakoodissa

• Layered Pane (Kerrosruutu)– Container– Asettaa komponentit eri

tasoihin (esim raahatavakomponentti piirretäänpäälimmäiseksi)

– Osat: MenuBar ja Content pane

Page 35: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

JFrame layers• Content Pane (Sisältöruuutu)

– Container– Sisältää UI-komponentit

• GlassPane (Lasiruutu)– Component– Läpinäkyvä ”päälimmäinen” kerros– Mahdollisuus estää tapahtumien pääsy säiliön komponenteille

frame.getContentPane().add(yellowLabel,BorderLayout.CENTER);

Page 36: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Grafiikan piirto

• java.awt.Graphics– abstrakti kantaluokka, joka sisältää grafiikan

piirtoon tarvittavat metodit• java.awt.Graphics2D

– Toteuttaa monimutkaisemmat grafiikan jatekstin piirtoon tarvittavat funktiot

– Esim• void rotate(double theta)• void scale(double sx, double sy)• void translate(int x, int y)

Page 37: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Ikkunan päivittäminen

• Ikkunan piirtofunktiovoid paint(Graphics g)

• Ikkunan päivittäminen ohjelmallisestivoid repaint()void repaint(int x, int y, int w, int h)

Page 38: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Esimerkki paint-metodistaimport javax.swing.*;import java.awt.*;

public class hello extends JPanel{

public hello(){

setPreferredSize(new Dimension(300,300));}

public void paint(Graphics g){

super.paint(g);g.setColor(Color.BLUE);Shape s = g.getClip();g.setClip(120,120,100,100);g.fillOval(20,20,200,200);g.setClip(s);

}}

Page 39: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Piirtojärjestys

Page 40: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Tapahtumakäsittely

public interface MouseListener{

void mouseClicked(MouseEvent e);void mouseEntered(MouseEvent e);void mouseExited(MouseEvent e);void mousePressed(MouseEvent e);void mouseReleased(MouseEvent e);

}

public interface MouseMotionListener{

void mouseDragged(MouseEvent e);void mouseMoved(MouseEvent e);

}

Tapahtumankäsittely on toteutettu javassa rajapintaluokkien avulla

public class MouseEvent{

int getButton();int getClickCount();Point getPoint();int getX();int getY();

}

Page 41: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Hiiritapahtumatimport javax.swing.*;import java.awt.*;import java.awt.event.*; // Otetaan uusi kirjasto käyttöön

public class hello extends JPanelimplements MouseListener {

private int x;private int y;

public hello() {// Rekisteröidään olio kuuntelemaan hiiritapahtumiaaddMouseListener(this);

}

// Tyhjät toteutukset niille funktiolle, joita ei käytetäpublic void mouseClicked(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}

// Toteutetaan tapahtumankäsittelijä, joka ottaa talteen klikkauspisteen// koordinaatit ja päivittää ikkunan uudelleenpublic void mousePressed(MouseEvent e) {

x = e.getX();y = e.getY();repaint();

}}

Page 42: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Adapteriluokat

import javax.swing.*;import java.awt.*;import java.awt.event.*;

public class hello extends JPanelprivate int x;private int y;

public hello() {// Luodaan olio ja rekisteröidään se kuuntelemaan hiiritapahtumiaaddMouseListener( new MouseHandler() );

}

// Sisäinen luokka ja peritään se MouseListener rajapinnan// toteuttavasta MouseAdapter luokasta.public class MouseHandler extends MouseAdapter {

public void mousePressed(MouseEvent e) {x = e.getX();y = e.getY();repaint();

}}

}

Antaa rajapintafunktioille tyhjät toteutukset

Page 43: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Adapteriluokat

ActionListenerKeyAdapterKeyListener

WindowFocusListenerWindowStateListener

WindowAdpaterWindowListenerMouseWheelListener

MouseMotionAdapterMouseMotionListenerMouseAdapterMouseListenerAdapteriRajapinta

Page 44: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Action

Action

Page 45: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Actionpublic class ActionDemo extends JPanel {

protected Action firstAction;protected JMenuItem item;protected JButton btn;

public ActionDemo() {firstAction = new FirstAction(”Toiminnon nimi”, icon);

item = new JMenuItem();item.setAction(firstAction);

btn = new JButton();btn.setAction(firstAction);

}

public class FirstAction extends AbstractAction {

public void actionPerformed(ActionEvent e) {setEnabled(false);

}}

Page 46: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

NäppäintapahtumatVoidaan toteuttaa Action-olioiden sekä InputMap ja ActionMap luokkien avulla

public class ActionDemo extends JPanel {

public ActionDemo() {InputMap im = getInputMap();ActionMap am = getActionMap();

KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_1,0);im.put(ks, “1");

am.put( new KeyAction(), “1");}

public class KeyAction extends AbstractAction {public void actionPerformed(ActionEvent e) {

// Näppäinkäsittelijän toteutus tänne…}

}

Page 47: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Dokumentaatio

• The Swing tutorial– http://java.sun.com/docs/books/tutorial/uiswin

g/TOC.html• Java API

– http://java.sun.com/j2se/1.5.0/docs/api/

Page 48: Java Swing - TUTgrako/2008/luennot/swing_2008.pdf · Java Swing “The Swing toolkit ... JTable, JTree, JList, JFileChooser, JColorChooser, JOptionPane Complex data components JLabel,

Lähteitä• Java AWT

– http://java.sun.com/j2se/1.5.0/docs/guide/awt/– http://en.wikipedia.org/wiki/Abstract_Window_Toolkit

• Java Swing– http://java.sun.com/j2se/1.5.0/docs/guide/swing/– http://en.wikipedia.org/wiki/Swing_(Java)

• The Swing tutorial– http://java.sun.com/docs/books/tutorial/uiswing/TOC.html

• Sun java– http://java.sun.com/

• JavaWorld– http://www.javaworld.com/

• How to use actions– http://java.sun.com/docs/books/tutorial/uiswing/misc/action.html