Første |
|
|
Swing'it! serie, Planche nr. 25 |
 |
Udskrift af : Swing'it!
|
Planche 1 : Swing'it!
- Hvad er Swing
- Installation
- Forskel til AWT
- Komponenter
- Opbygning
- Programmering
Planche 2 : Swing
- Er en overbygning til AWT
- Sammen med AWT:
- Java Foundation Classes (JFC)
Planche 3 : Hvorfor
Der var fejl og mangler i AWT:
- AWT ikke fleksibel nok
- AWT "låst" til platform
- For få komponenter
Planche 4 : Hvordan
- Swing er en udvidelse af AWT
- i JDK v.1.1.x
- add-on pakke (Swing v.1.0.3)
- i JDK v.1.2
Planche 5 : Installation (JDK 1.1)
- Download Swing 1.0.3
- Unzip til Swing-1.0.3 katalog
- SET JAVA_HOME til JDK-katalog
- SET SWING_HOME til Swing-1.0.3 katalog
- tilføj jar-files fra SWING_HOME til CLASSPATH
- SET CLASSPATH=.;%CLASSPATH%;%SWING-HOME%\swingall.jar
SET-kommandoerne tilføjes til autoexec og der rebootes
Det først punktum efter = i CLASSPATH er KRITISK!
Planche 6 : Installation (Netscape)
Hvis man kun vil se Swing-applets (f.eks. hos brugere),
og man benytter Netscape:
- Kopier alle *.jar-filer
- til Netscapes CLASSES-katalog
- (Se efter andre jar-filer)
- Kun Netscape v.4.0.6 (JDK115) - 8 og v.4.5
Installation i Internet Explorer som for JDK 1.1
Planche 7 : Installation (JDK 1.2)
- Installer JDK 1.2!
- Browsere virker ikke (endnu)
- Brug derfor plugins
- (se www.javasoft.com)
Stort set alle browsere supporter plugins. Desværre er det kun en standard på Windows95. Men det er også KUN DER, der er forskelle på browsere..
Planche 8 : Oversigt
Swing består af 2 typer komponenter:
- Topniveau komponenter:
- JFrame, JApplet, JWindow, JDialog
- Det er "tunge" komponenter
- Alle andre
- Ex. JButton, JLabel...
- Letvægtskomponenter
Brug få tunge komponenter!
Planche 9 : Swing-programmering


//Set up the JPanel, which contains the text field and list.
JPanel panel = new JPanel();
panel.setLayout(new SomeLayoutManager());
panel.add(textField);
panel.add(list);
//topLevel is an instance of JApplet or JFrame
Container contentPane = topLevel.getContentPane();
contentPane.setLayout(new AnotherLayoutManager());
contentPane.add(button1);
contentPane.add(button2);
contentPane.add(panel);
Planche 10 : Altid en 'pane'!
- Man kan ALDRIG tilføje et letvægtskomponent direkte til et topniveau komponent!
Planche 11 : Forskel til AWT
- Alle AWT-komponenter findes i Swing!
- Brug enten AWT eller Swing
- Brug kun event-klasser fra AWT
- import java.awt.event.*;
- import java.awt.event.
- Swing kun med Event-model 1.1!
Planche 12 : Component -> JComponent
JComponent som udvider AWTs Component tilføjer:
- Rammestyring
- Dobbelt buffere (ingen flimmer)
- Hjælpetekster
- Tastaturstøtte (musefri)
- Properties (runtime-konfiguration)
- "Look and Feel" kontrol
- Bedre layout-kontrol
Planche 13 : Swing'er det?
Den "berømte" Swingset-demo!
(Forudsætter, at Swing er installeret i
C:\Swing-1.0.3)
Planche 14 : Et simpelt eksempel
Sæt følgende vindue op:

Programmet ligger i SwingApplication.java
og udfører følgende opgaver:
- Importere swingpakkerne
- Vælger "look and feel"
- Opretter top komponenterne
- Opretter knapper og etiketter
- Tilføjer rammer til komponenter
- håndtere hændelser
- Styrer tråde
- og eventuelle hjælpefunktioner
Planche 15 : Ex: import
Dette importerer swingklasser:
import com.sun.java.swing.*; // Swing 1.0.x
import javax.swing.*; // JDK 1.2
import java.awt.event.*; // Uændret event-klasser
import java.awt.* // Evt. ikke-grafiske awt-klasser
Planche 16 : Ex.: "Look and Feel"
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(
UIManager.getCrossPlatformLookAndFeelClassName());
} catch (Exception e) { }
new SwingApplication(); //Create and show the GUI.
}
Dette giver den generelle java-grænseflade
Planche 17 : Ex.: Sæt topniveau
Der er kun et topniveau, en JFrame
public class SwingApplication ... {
...
public SwingApplication() {
//Create the top-level container.
JFrame frame = new JFrame("SwingApplication");
//...create a JButton and a JLabel...
//...add them to a JPanel...
//Add the JPanel to the frame.
frame.getContentPane().add(pane, BorderLayout.CENTER);
//Finish setting up the frame, and show it.
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.pack();
frame.setVisible(true);
}
...
}
Planche 18 : Ex.: Knap og etiket
Initialiser knappen:
JButton button = new JButton("I'm a Swing button!");
button.setMnemonic('i');
button.addActionListener(this);
Initialiser etikette:
...//where instance variables are declared:
private JLabel label;
private static String labelPrefix = "Number of button clicks: ";
private int numClicks = 0;
...//in GUI initialization code:
label = new JLabel(labelPrefix + "0 ");
label.setLabelFor(button);
...//in the event handler for button clicks:
label.setText(labelPrefix + numClicks);
Planche 19 : Ex.: Tilføjer komponenter
Tilføj komponenter til container:
JPanel pane = new JPanel();
pane.setBorder(BorderFactory.createEmptyBorder(30, 30, 10, 30));
pane.setLayout(new GridLayout(0, 1));
pane.add(button);
pane.add(label);
Planche 20 : Ex.: Rammer
Sætter rammer omkring:
pane.setBorder(BorderFactory.createEmptyBorder(30, 30, 10, 30));
30 pixels til højre, venstre og i toppen, 10 pixels i bunden.
Planche 21 : Ex.: Hændelser
public class SwingApplication implements ActionListener {
...
public SwingApplication() {
...
button.addActionListener(this);
...
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
...
}
public void actionPerformed(ActionEvent e) {
numClicks++;
label.setText(labelPrefix + numClicks);
}
...
}
Planche 22 : EX.: Tråde mv.?
Der er ikke explicitte tråde i dette simple program.
Planche 23 : Ex.: Hjælpefunktioner
Der er indbygget støtte til hjælpfunktioner
Her er kun brugt en enkel:
label.setLabelFor(button);
Planche 24 : Øvelse 5a
Lav en GUI-JApplet m. Eventmodel
- Som i forslag 4 - 3 etiketter og 2 knapper
- Hint: Start forfra med ovennævnte eksempel
Planche 25 : Do it yourself
- Hent Swing-bibliotek
- Hent Javasoft tutorial for Swing
- Eller: Køb en swing-bog!
- Glem så alt om AWT...
© 1998 BLA*net - Leif E. Andersen,
leander@blanet.dk