JFrame
: main windowJDialog
: secondary windowJApplet
: appletJPanel
, JTabbedPane
,
JScrollPane
... JComboBox
, JTextField
,
JTable
...
Events
ActionListener | User clicks a button, presses Return while typing in a text field, or chooses a menu item |
WindowListener | User closes a frame (main window) |
MouseListener | User presses a mouse button while the cursor is over a component |
MouseMotionListener | User moves the mouse over a component |
ComponentListener | Component becomes visible |
FocusListener | Component gets the keyboard focus |
ListSelectionListener | Table or list selection changes |
public class ResultRecorder implements
javax.swing.table.TableModel { private javax.swing.event.EventListenerList a_listenerList; ... public ResultRecorder() { a_data = new java.util.Vector(); a_listenerList = new javax.swing.event.EventListenerList(); } void record(String testName, String testDescription, int resultStatus, String resultDescription) { a_data.add( new ResultRecord(testName, testDescription, resultStatus, resultDescription) ); javax.swing.event.TableModelEvent e; int n = a_data.size(); e = new javax.swing.event.TableModelEvent(this, n, n, javax.swing.event.TableModelEvent.ALL_COLUMNS, javax.swing.event.TableModelEvent.INSERT); java.util.EventListener[] list = a_listenerList.getListeners(javax.swing.event.TableModelListener.class); for (int i = list.length-1; i>=0; i--) { ((javax.swing.event.TableModelListener)list[i]).tableChanged(e); } } ... public void addTableModelListener(javax.swing.event.TableModelListener l) { a_listenerList.add(javax.swing.event.TableModelListener.class, l); } public void removeTableModelListener(javax.swing.event.TableModelListener l) { a_listenerList.remove(javax.swing.event.TableModelListener.class, l); } } |
text components:
FFormattedTextField
a_startPriority = new JFormattedTextField(new Integer(0));
...
int v = ((Number)a_startPriority.getValue()).intValue();
JList
JTree
JTable
layout managers
try { UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); } catch (Exception e) { } |
setVisible(true)
,
show
or pack
has been called), all the
code that might affect it state or that might depend on its state must
be executed in the event-dispatching thread. SwingWorker
is a helper class to launch lengthly background computation from the
event-dispatcher thread. SwingUtilities.invokeLater
allows a thread to
request
the event-dispatching thread a given task.SwingUtilities.invokeAndWait
does the same, but
returns only when the task has been executed.