diff options
author | Guilhem Lavaux <guilhem@kaffe.org> | 2006-02-18 18:33:27 +0000 |
---|---|---|
committer | Guilhem Lavaux <guilhem@kaffe.org> | 2006-02-18 18:33:27 +0000 |
commit | cc0db4315db5e0550da9a4a13f4b5e502e58a5c2 (patch) | |
tree | 25a49d0fc9588fae44f8e5edfc496f612a316931 /examples | |
parent | 5093bf804963cd90f1c6c6053c0417f78b945ca6 (diff) | |
download | classpath-cc0db4315db5e0550da9a4a13f4b5e502e58a5c2.tar.gz |
Merged with HEAD.
Diffstat (limited to 'examples')
4 files changed, 264 insertions, 18 deletions
diff --git a/examples/gnu/classpath/examples/CORBA/swing/x5/_GameManagerImpl_Tie.java b/examples/gnu/classpath/examples/CORBA/swing/x5/_GameManagerImpl_Tie.java index 17a62600c..a0c33df34 100644 --- a/examples/gnu/classpath/examples/CORBA/swing/x5/_GameManagerImpl_Tie.java +++ b/examples/gnu/classpath/examples/CORBA/swing/x5/_GameManagerImpl_Tie.java @@ -57,13 +57,8 @@ import org.omg.PortableServer.Servant; * Tie on the client side. The Game Manager methods contain the code for remote * invocation. * - * This class is normally generated with rmic from the {@link GameManagerImpl}: - * - * <pre> - * rmic -iiop -poa -keep gnu.classpath.examples.CORBA.swing.x5.GameManagerImpl - * </pre> - * - * (the compiled package must be present in the current folder). + * This class is normally generated with rmic or grmic from the + * {@link GameManagerImpl}. See tools/gnu/classpath/tools/giop/README. * * In this example the class was manually edited and commented for better * understanding of functionality. diff --git a/examples/gnu/classpath/examples/CORBA/swing/x5/_PlayerImpl_Tie.java b/examples/gnu/classpath/examples/CORBA/swing/x5/_PlayerImpl_Tie.java index 730c6f469..f6c5f4765 100644 --- a/examples/gnu/classpath/examples/CORBA/swing/x5/_PlayerImpl_Tie.java +++ b/examples/gnu/classpath/examples/CORBA/swing/x5/_PlayerImpl_Tie.java @@ -58,11 +58,8 @@ import org.omg.PortableServer.Servant; * rmic -iiop -poa -keep gnu.classpath.examples.CORBA.swing.x5.PlayerImpl * (the compiled package must be present in the current folder). * - * This class is normally generated with rmic from the {@link PlayerImpl}: - * <pre> - * rmic -iiop -poa -keep gnu.classpath.examples.CORBA.swing.x5.PlayerImpl - * </pre> - * (the compiled package must be present in the current folder). + * This class is normally generated with rmic or grmic from the + * {@link PlayerImpl}. See tools/gnu/classpath/tools/giop/README. * * In this example the class was manually edited and commented for better * understanding of functionality. diff --git a/examples/gnu/classpath/examples/swing/SpinnerDemo.java b/examples/gnu/classpath/examples/swing/SpinnerDemo.java new file mode 100644 index 000000000..4a05bc482 --- /dev/null +++ b/examples/gnu/classpath/examples/swing/SpinnerDemo.java @@ -0,0 +1,230 @@ +/* SpinnerDemo.java -- An example showing various spinners in Swing. + Copyright (C) 2006, Free Software Foundation, Inc. + +This file is part of GNU Classpath examples. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. +*/ + + +package gnu.classpath.examples.swing; + +import java.awt.BorderLayout; +import java.awt.Font; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Calendar; +import java.util.Date; + +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JSpinner; +import javax.swing.SpinnerDateModel; +import javax.swing.SpinnerListModel; +import javax.swing.SpinnerNumberModel; +import javax.swing.UIManager; +import javax.swing.plaf.metal.DefaultMetalTheme; +import javax.swing.plaf.metal.MetalLookAndFeel; + +/** + * A simple demo showing various spinners in different states. + */ +public class SpinnerDemo + extends JFrame + implements ActionListener +{ + private JPanel content; + private JCheckBox spinnerState1; + private JSpinner spinner1; + private JSpinner spinner2; + + private JCheckBox spinnerState2; + private JSpinner spinner3; + private JSpinner spinner4; + + private JCheckBox spinnerState3; + private JSpinner spinner5; + private JSpinner spinner6; + + /** + * Creates a new demo instance. + * + * @param title the frame title. + */ + public SpinnerDemo(String title) + { + super(title); + JPanel content = createContent(); + // initFrameContent() is only called (from main) when running this app + // standalone + } + + /** + * When the demo is run independently, the frame is displayed, so we should + * initialise the content panel (including the demo content and a close + * button). But when the demo is run as part of the Swing activity board, + * only the demo content panel is used, the frame itself is never displayed, + * so we can avoid this step. + */ + public void initFrameContent() + { + JPanel closePanel = new JPanel(); + JButton closeButton = new JButton("Close"); + closeButton.setActionCommand("CLOSE"); + closeButton.addActionListener(this); + closePanel.add(closeButton); + content.add(closePanel, BorderLayout.SOUTH); + getContentPane().add(content); + } + + /** + * Returns a panel with the demo content. The panel + * uses a BorderLayout(), and the BorderLayout.SOUTH area + * is empty, to allow callers to add controls to the + * bottom of the panel if they want to (a close button is + * added if this demo is being run as a standalone demo). + */ + JPanel createContent() + { + if (content == null) + { + content = new JPanel(new BorderLayout()); + JPanel panel = new JPanel(new GridLayout(3, 1)); + panel.add(createPanel1()); + panel.add(createPanel2()); + panel.add(createPanel3()); + content.add(panel); + } + return content; + } + + private JPanel createPanel1() + { + JPanel panel = new JPanel(new BorderLayout()); + this.spinnerState1 = new JCheckBox("Enabled", true); + this.spinnerState1.setActionCommand("COMBO_STATE1"); + this.spinnerState1.addActionListener(this); + panel.add(this.spinnerState1, BorderLayout.EAST); + + JPanel controlPanel = new JPanel(); + controlPanel.setBorder(BorderFactory.createTitledBorder( + "Number Spinner: ")); + this.spinner1 = new JSpinner(new SpinnerNumberModel(5.0, 0.0, 10.0, 0.5)); + this.spinner2 = new JSpinner(new SpinnerNumberModel(50, 0, 100, 5)); + this.spinner2.setFont(new Font("Dialog", Font.PLAIN, 20)); + controlPanel.add(this.spinner1); + controlPanel.add(this.spinner2); + + panel.add(controlPanel); + + return panel; + } + + private JPanel createPanel2() + { + JPanel panel = new JPanel(new BorderLayout()); + this.spinnerState2 = new JCheckBox("Enabled", true); + this.spinnerState2.setActionCommand("COMBO_STATE2"); + this.spinnerState2.addActionListener(this); + panel.add(this.spinnerState2, BorderLayout.EAST); + + JPanel controlPanel = new JPanel(); + controlPanel.setBorder(BorderFactory.createTitledBorder("Date Spinner: ")); + this.spinner3 = new JSpinner(new SpinnerDateModel(new Date(), null, null, + Calendar.DATE)); + + this.spinner4 = new JSpinner(new SpinnerDateModel(new Date(), null, null, + Calendar.YEAR)); + this.spinner4.setFont(new Font("Dialog", Font.PLAIN, 20)); + + controlPanel.add(this.spinner3); + controlPanel.add(this.spinner4); + + panel.add(controlPanel); + + return panel; + } + + private JPanel createPanel3() + { + JPanel panel = new JPanel(new BorderLayout()); + this.spinnerState3 = new JCheckBox("Enabled", true); + this.spinnerState3.setActionCommand("COMBO_STATE3"); + this.spinnerState3.addActionListener(this); + panel.add(this.spinnerState3, BorderLayout.EAST); + + JPanel controlPanel = new JPanel(); + controlPanel.setBorder(BorderFactory.createTitledBorder("List Spinner: ")); + this.spinner5 = new JSpinner(new SpinnerListModel(new Object[] {"Red", + "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"})); + + this.spinner6 = new JSpinner(new SpinnerListModel(new Object[] {"Red", + "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"})); + this.spinner6.setValue("Yellow"); + this.spinner6.setFont(new Font("Dialog", Font.PLAIN, 20)); + + controlPanel.add(this.spinner5); + controlPanel.add(this.spinner6); + + panel.add(controlPanel); + + return panel; + } + + public void actionPerformed(ActionEvent e) + { + if (e.getActionCommand().equals("COMBO_STATE1")) + { + spinner1.setEnabled(spinnerState1.isSelected()); + spinner2.setEnabled(spinnerState1.isSelected()); + } + else if (e.getActionCommand().equals("COMBO_STATE2")) + { + spinner3.setEnabled(spinnerState2.isSelected()); + spinner4.setEnabled(spinnerState2.isSelected()); + } + else if (e.getActionCommand().equals("COMBO_STATE3")) + { + spinner5.setEnabled(spinnerState3.isSelected()); + spinner6.setEnabled(spinnerState3.isSelected()); + } + else if (e.getActionCommand().equals("CLOSE")) + { + System.exit(0); + } + } + + public static void main(String[] args) + { + try + { + MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme()); + UIManager.setLookAndFeel(new javax.swing.plaf.metal.MetalLookAndFeel()); + } + catch (Exception e) { + e.printStackTrace(); + } + SpinnerDemo app = new SpinnerDemo("Spinner Demo"); + app.initFrameContent(); + app.pack(); + app.setVisible(true); + } + +} diff --git a/examples/gnu/classpath/examples/swing/TableDemo.java b/examples/gnu/classpath/examples/swing/TableDemo.java index 92f4cc758..1fbf2de53 100644 --- a/examples/gnu/classpath/examples/swing/TableDemo.java +++ b/examples/gnu/classpath/examples/swing/TableDemo.java @@ -45,7 +45,9 @@ import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; +import javax.swing.table.DefaultTableColumnModel; import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableColumn; /** * Displays the editable table. The first column consists of check boxes. @@ -62,7 +64,7 @@ public class TableDemo extends JFrame /** * The initial column count for this table. */ - static int cols = 8; + static int cols = 7; /** @@ -112,11 +114,13 @@ public class TableDemo extends JFrame } /** - * The column name. + * The column name, as suggested by model. This header should not be + * visible, as it is overridden by setting the header name with + * {@link TableColumn#setHeaderValue} in {@link TableDemo#createContent}. */ public String getColumnName(int column) { - return "Demo "+column; + return "Error "+column; } /** @@ -137,7 +141,7 @@ public class TableDemo extends JFrame * The table being displayed. */ JTable table = new JTable(); - + /** * The table model. */ @@ -171,7 +175,6 @@ public class TableDemo extends JFrame { JPanel p = new JPanel(); p.setLayout(new BorderLayout()); - table.setModel(model); values = new Object[rows][]; for (int i = 0; i < values.length; i++) { @@ -183,6 +186,27 @@ public class TableDemo extends JFrame values [i][0] = i % 2 == 0? Boolean.TRUE : Boolean.FALSE; } + table.setModel(model); + + // Make the columns with gradually increasing width: + DefaultTableColumnModel cm = new DefaultTableColumnModel(); + for (int i = 0; i < cols; i++) + { + TableColumn column = new TableColumn(i); + + // Showing the variable width columns. + int width = 100+20*i; + column.setPreferredWidth(width); + + // If we do not set the header value here, the value, returned + // by model, is used. + column.setHeaderValue("Width +"+(20*i)); + + cm.addColumn(column); + } + + table.setColumnModel(cm); + // Create the table, place it into scroll pane and place // the pane into this frame. JScrollPane scroll = new JScrollPane(); @@ -209,4 +233,4 @@ public class TableDemo extends JFrame frame.validate(); frame.setVisible(true); } -}
\ No newline at end of file +} |