Applets mit Swing
Als Alternative zur Verwendung von AWT-Oberflächen können Applets auch Swing-Steuerelemente enthalten. Hierfür benötigen
wir natürlich eine Swing-Oberfläche als Basis. Um Swing-Komponenten benutzen zu können, müssen wir deshalb die Basisklasse von
java.applet.Applet
in javax.swing.JApplet
ändern. Dadurch stehen uns nun alle Komponenten und
Steuerelemente von Swing zur Verfügung.
Auch für Swing-Oberflächen bietet NetBeans ein Tool (auch GUI-Builder genannt) zum Designen der grafischen Oberfläche. Beim
Erstellen der Datei wählen wir JApplet Form
aus der Kategorie Swing GUI Forms
.
Das untere Beispiel zeigt ein Formular mit einigen Formular-Steuerelementen wie z. B. JLabel
, JTextField
,
JTextArea
, JRadioButton
, JCheckBox
, JComboBox
und JButton
.
Beim Klick auf den Button wird ein Meldungsfenster angezeigt. Nach Bestätigung der Meldung wird das Formular zurückgesetzt.
package de.hwh.bsp.swingapp; import javax.swing.JOptionPane; public class MeinApplet extends javax.swing.JApplet { @Override public void init() { /* Set the Nimbus look and feel */ // [...] /* Create and display the applet */ try { java.awt.EventQueue.invokeAndWait(new Runnable() { @Override public void run() { initComponents(); } }); } catch (Exception ex) { ex.printStackTrace(); } } @SuppressWarnings("unchecked") private void initComponents() { // [...] } private void btnAbschickenMouseClicked(java.awt.event.MouseEvent evt) { if (JOptionPane.showConfirmDialog(null, "Sind Ihre Eingaben korrekt?", "Eingabe prüfen!", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { rdbgAnrede.setSelected(rdbHerr.getModel(), true); txtName.setText(""); txtEMail.setText(""); cmbSprache.setSelectedIndex(0); taNachricht.setText(""); cbNews.setSelected(false); } } // Variables declaration - do not modify private javax.swing.JButton btnAbschicken; private javax.swing.JCheckBox cbNews; private javax.swing.JComboBox<String> cmbSprache; private javax.swing.JPanel formPanel; private javax.swing.JLabel lblAnrede; private javax.swing.JLabel lblEMail; private javax.swing.JLabel lblNachricht; private javax.swing.JLabel lblName; private javax.swing.JLabel lblNews; private javax.swing.JLabel lblSprache; private javax.swing.JRadioButton rdbFrau; private javax.swing.JRadioButton rdbHerr; private javax.swing.ButtonGroup rdbgAnrede; private javax.swing.JScrollPane spNachricht; private javax.swing.JTextArea taNachricht; private javax.swing.JTextField txtEMail; private javax.swing.JTextField txtName; // End of variables declaration }
Übrigens: Natürlich stehen in der Klasse JApplet
weiterhin die Schnittstellenfunktionen init()
,
start()
, stop()
und destroy()
sowie die Funktion getParameter()
zur Verfügung.
Grund dafür ist, dass JApplet
eine von Applet
abgeleitete Klasse ist.