<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSwing%2FSwing_Introduction</id>
		<title>Java Tutorial/Swing/Swing Introduction - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSwing%2FSwing_Introduction"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Swing/Swing_Introduction&amp;action=history"/>
		<updated>2026-04-10T19:20:51Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Swing/Swing_Introduction&amp;diff=3937&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Swing/Swing_Introduction&amp;diff=3937&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 17:44, 31 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Swing/Swing_Introduction&amp;diff=3938&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Swing/Swing_Introduction&amp;diff=3938&amp;oldid=prev"/>
				<updated>2010-05-31T15:32:59Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Get position of component ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.border.TitledBorder;&lt;br /&gt;
public class Main extends JFrame {&lt;br /&gt;
  JComponent comp = new JLabel(&amp;quot;Test label&amp;quot;);&lt;br /&gt;
  public Main() {&lt;br /&gt;
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    comp.setToolTipText(&amp;quot;Some tooltip text for component&amp;quot;);&lt;br /&gt;
    comp.setBorder(new TitledBorder(&amp;quot;Button&amp;quot;));&lt;br /&gt;
    System.out.println(&amp;quot;X:&amp;quot; + comp.getX() + &amp;quot; Y:&amp;quot; + comp.getY() + &amp;quot; width:&amp;quot;&lt;br /&gt;
        + comp.getWidth() + &amp;quot; height:&amp;quot; + comp.getHeight());&lt;br /&gt;
    getContentPane().add(comp);&lt;br /&gt;
    pack();&lt;br /&gt;
    System.out.println(&amp;quot;X:&amp;quot; + comp.getX() + &amp;quot; Y:&amp;quot; + comp.getY() + &amp;quot; width:&amp;quot;&lt;br /&gt;
        + comp.getWidth() + &amp;quot; height:&amp;quot; + comp.getHeight());&lt;br /&gt;
    setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String arg[]) {&lt;br /&gt;
    new Main();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Small Swing Application ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.EventQueue;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
public class ButtonSample {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Runnable runner = new Runnable() {&lt;br /&gt;
      public void run() {&lt;br /&gt;
        JFrame frame = new JFrame(&amp;quot;Button Sample&amp;quot;);&lt;br /&gt;
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
        JButton button = new JButton(&amp;quot;Select Me&amp;quot;);&lt;br /&gt;
        // Define ActionListener&lt;br /&gt;
        ActionListener actionListener = new ActionListener() {&lt;br /&gt;
          public void actionPerformed(ActionEvent actionEvent) {&lt;br /&gt;
            System.out.println(&amp;quot;I was selected.&amp;quot;);&lt;br /&gt;
          }&lt;br /&gt;
        };&lt;br /&gt;
        // Attach listeners&lt;br /&gt;
        button.addActionListener(actionListener);&lt;br /&gt;
        frame.add(button, BorderLayout.SOUTH);&lt;br /&gt;
        frame.setSize(300, 100);&lt;br /&gt;
        frame.setVisible(true);&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    EventQueue.invokeLater(runner);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Swing components ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JPasswordFielda specialized text field for password entryJEditorPane and JTextPaneprovide support for displaying and editing multiple-attributed content, such as an HTML and RTF.JSpinnerprovides selection from an ordered set of predefined valuesJToggleButtonoffers a button that stays depressed when selected.JSliderlike the Scrollbar component, offers various clues to help the user choose a value.JProgressBarallows the user to visually see the progress of an activity.JFormattedTextFieldprovides help for the input of formatted text, like numeric values, phone numbersJTabledisplays two-dimensional row and column informationJTreesupports the display of hierarchical data.JToolTipoffers useful tips.JToolBaroffers a draggable toolbarJRadioButtonMenuItema radio button menu component.JSeparatorThe menu&amp;quot;s separator barJDesktopPane and JInternalFrameThis pair of components are for Windows Multiple Document Interface (MDI).JOptionPanecreates pop-up windows with varied content,JColorChooserfor choosing a colorJSplitPaneplaces multiple components in a window with draggable divider.JTabbedPanetabbed panel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Swing Constants ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Box-orientation Constants:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;static int TOP&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;static int LEFT&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;static int BOTTOM&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;static int RIGHT&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Geographical-direction Constants:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;static int NORTH&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;static int NORTH_EAST&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;static int EAST&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;static int SOUTH_EAST&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;static int SOUTH&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;static int SOUTH_WEST&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;static int SOUTH&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;static int NORTH_WEST&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;static int CENTER&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The orientation of a component:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;static int HORIZONTAL&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;static int VERTICAL&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Swing MVC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The design of the Swing component classes is loosely based on &lt;br /&gt;
   the Model-View-Controller architecture, or MVC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;The model stores the data.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;The view creates the visual representation from the data in the model.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;The controller deals with user interaction and modifies the model and/or the view.&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Swing Worker from JDK 6 SE ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.LayoutManager;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.beans.PropertyChangeEvent;&lt;br /&gt;
import java.beans.PropertyChangeListener;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import javax.swing.BoxLayout;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.SwingWorker;&lt;br /&gt;
public class SwingWorkerDemo {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JTextArea textArea = new JTextArea(10, 20);&lt;br /&gt;
    final JProgressBar progressBar = new JProgressBar(0, 10);&lt;br /&gt;
    final CounterTask task = new CounterTask();&lt;br /&gt;
    task.addPropertyChangeListener(new PropertyChangeListener() {&lt;br /&gt;
      public void propertyChange(PropertyChangeEvent evt) {&lt;br /&gt;
        if (&amp;quot;progress&amp;quot;.equals(evt.getPropertyName())) {&lt;br /&gt;
          progressBar.setValue((Integer) evt.getNewValue());&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JButton startButton = new JButton(&amp;quot;Start&amp;quot;);&lt;br /&gt;
    startButton.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent e) {&lt;br /&gt;
        task.execute();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JButton cancelButton = new JButton(&amp;quot;Cancel&amp;quot;);&lt;br /&gt;
    cancelButton.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent e) {&lt;br /&gt;
        task.cancel(true);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JPanel buttonPanel = new JPanel();&lt;br /&gt;
    buttonPanel.add(startButton);&lt;br /&gt;
    buttonPanel.add(cancelButton);&lt;br /&gt;
    JPanel cp = new JPanel();&lt;br /&gt;
    LayoutManager layout = new BoxLayout(cp, BoxLayout.Y_AXIS);&lt;br /&gt;
    cp.setLayout(layout);&lt;br /&gt;
    cp.add(buttonPanel);&lt;br /&gt;
    cp.add(new JScrollPane(textArea));&lt;br /&gt;
    cp.add(progressBar);&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;SwingWorker Demo&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setContentPane(cp);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class CounterTask extends SwingWorker&amp;lt;Integer, Integer&amp;gt; {&lt;br /&gt;
  private static final int DELAY = 1000;&lt;br /&gt;
  public CounterTask() {&lt;br /&gt;
  }&lt;br /&gt;
  @Override&lt;br /&gt;
  protected Integer doInBackground() throws Exception {&lt;br /&gt;
    int i = 0;&lt;br /&gt;
    int count = 10;&lt;br /&gt;
    while (!isCancelled() &amp;amp;&amp;amp; i &amp;lt; count) {&lt;br /&gt;
      i++;&lt;br /&gt;
      publish(new Integer[] { i });&lt;br /&gt;
      setProgress(count * i / count);&lt;br /&gt;
      Thread.sleep(DELAY);&lt;br /&gt;
    }&lt;br /&gt;
    return count;&lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  protected void process(List&amp;lt;Integer&amp;gt; chunks) {&lt;br /&gt;
    for (int i : chunks)&lt;br /&gt;
      System.out.println(i);&lt;br /&gt;
  }&lt;br /&gt;
  @Override&lt;br /&gt;
  protected void done() {&lt;br /&gt;
    if (isCancelled())&lt;br /&gt;
      System.out.println(&amp;quot;Cancelled !&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
      System.out.println(&amp;quot;Done !&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Understanding the Predefined Data Models: Swing Component Models ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Component         Data Model(Interface)                Implementations&lt;br /&gt;
   AbstractButton    ButtonModel                          DefaultButtonModel&lt;br /&gt;
   JColorChooser     ColorSelectionModel                  DefaultColorSelectionModel&lt;br /&gt;
   JComboBox         ComboBoxModel                        N/A&lt;br /&gt;
                     MutableComboBoxModel                 DefaultComboBoxModel&lt;br /&gt;
   JFileChooser      ListModel                            BasicDirectoryModel&lt;br /&gt;
   JList             ListModel                            AbstractListModel&lt;br /&gt;
                                                          DefaultListModel  &lt;br /&gt;
                     ListSelectionModel                   DefaultListSelectionModel&lt;br /&gt;
   JMenuBar          SingleSelectionModel                 DefaultSingleSelectionModel&lt;br /&gt;
   JPopupMenu        SingleSelectionModel                 DefaultSingleSelectionModel&lt;br /&gt;
   JProgressBar      BoundedRangeModel                    DefaultBoundedRangeModel&lt;br /&gt;
   JScrollBar        BoundedRangeModel                    DefaultBoundedRangeModel&lt;br /&gt;
   JSlider           BoundedRangeModel                    DefaultBoundedRangeModel&lt;br /&gt;
   JSpinner          SpinnerModel                         AbstractSpinnerModel&lt;br /&gt;
                                                          SpinnerDateModel  &lt;br /&gt;
                                                          SpinnerListModel                     &lt;br /&gt;
                                                          SpinnerNumberModel&lt;br /&gt;
   JTabbedPane       SingleSelectionModel                 DefaultSingleSelectionModel&lt;br /&gt;
   JTable            TableModel                           AbstractTableModel&lt;br /&gt;
                                                          DefaultTableModel&lt;br /&gt;
                     TableColumnModel                     DefaultTableColumnModel&lt;br /&gt;
                     ListSelectionModel                   DefaultListSelectionModel&lt;br /&gt;
   JTextComponent    Document                             AbstractDocument&lt;br /&gt;
                                                          PlainDocument&lt;br /&gt;
                                                          StyledDocument&lt;br /&gt;
                                                          DefaultStyleDocument&lt;br /&gt;
                                                          HTMLDocument&lt;br /&gt;
   JToggleButton     ButtonModel                          ToggleButtonModel&lt;br /&gt;
   JTree             TreeModel                            DefaultTreeModel&lt;br /&gt;
                     TreeSelectionModel                    DefaultTreeSelectionModel&lt;br /&gt;
                                                          JTree.EmptySelectionModel&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>