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

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Thread/Thread_Swing&amp;diff=2789&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Thread/Thread_Swing&amp;diff=2789&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:26Z</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://www.jexp.ru/index.php?title=Java_Tutorial/Thread/Thread_Swing&amp;diff=2790&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Thread/Thread_Swing&amp;diff=2790&amp;oldid=prev"/>
				<updated>2010-05-31T15:18:09Z</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;==  Create a thread to update Swing ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;implements the Runnable interface.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;extends the Thread class.&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The threads must also create a run() method that accepts no &lt;br /&gt;
arguments and returns void. The run() method is called when the thread is started. &lt;br /&gt;
A thread is started by invoking the Thread.start() method. It can be stopped by &lt;br /&gt;
returning from the run() method.&amp;lt;/p&amp;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.Color;&lt;br /&gt;
import java.awt.Font;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.text.SimpleDateFormat;&lt;br /&gt;
import java.util.Date;&lt;br /&gt;
import java.util.Locale;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class Clock extends JPanel implements Runnable {&lt;br /&gt;
  Thread thread = null;&lt;br /&gt;
  SimpleDateFormat formatter = new SimpleDateFormat(&amp;quot;s&amp;quot;, Locale.getDefault());&lt;br /&gt;
  Date currentDate;&lt;br /&gt;
  int xcenter = 100, ycenter = 100, lastxs = 0, lastys = 0, lastxm = 0, lastym = 0, lastxh = 0,&lt;br /&gt;
      lastyh = 0;&lt;br /&gt;
  private void drawStructure(Graphics g) {&lt;br /&gt;
    g.setFont(new Font(&amp;quot;TimesRoman&amp;quot;, Font.PLAIN, 14));&lt;br /&gt;
    g.setColor(Color.blue);&lt;br /&gt;
    g.drawOval(xcenter - 50, ycenter - 50, 100, 100);&lt;br /&gt;
    g.setColor(Color.darkGray);&lt;br /&gt;
    g.drawString(&amp;quot;9&amp;quot;, xcenter - 45, ycenter + 3);&lt;br /&gt;
    g.drawString(&amp;quot;3&amp;quot;, xcenter + 40, ycenter + 3);&lt;br /&gt;
    g.drawString(&amp;quot;12&amp;quot;, xcenter - 5, ycenter - 37);&lt;br /&gt;
    g.drawString(&amp;quot;6&amp;quot;, xcenter - 3, ycenter + 45);&lt;br /&gt;
  }&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    int xhour, yhour, xminute, yminute, xsecond, ysecond, second, minute, hour;&lt;br /&gt;
    drawStructure(g);&lt;br /&gt;
    currentDate = new Date();&lt;br /&gt;
    &lt;br /&gt;
    formatter.applyPattern(&amp;quot;s&amp;quot;);&lt;br /&gt;
    second = Integer.parseInt(formatter.format(currentDate));&lt;br /&gt;
    formatter.applyPattern(&amp;quot;m&amp;quot;);&lt;br /&gt;
    minute = Integer.parseInt(formatter.format(currentDate));&lt;br /&gt;
    formatter.applyPattern(&amp;quot;h&amp;quot;);&lt;br /&gt;
    hour = Integer.parseInt(formatter.format(currentDate));&lt;br /&gt;
    xsecond = (int) (Math.cos(second * 3.14f / 30 - 3.14f / 2) * 45 + xcenter);&lt;br /&gt;
    ysecond = (int) (Math.sin(second * 3.14f / 30 - 3.14f / 2) * 45 + ycenter);&lt;br /&gt;
    xminute = (int) (Math.cos(minute * 3.14f / 30 - 3.14f / 2) * 40 + xcenter);&lt;br /&gt;
    yminute = (int) (Math.sin(minute * 3.14f / 30 - 3.14f / 2) * 40 + ycenter);&lt;br /&gt;
    xhour = (int) (Math.cos((hour * 30 + minute / 2) * 3.14f / 180 - 3.14f / 2) * 30 + xcenter);&lt;br /&gt;
    yhour = (int) (Math.sin((hour * 30 + minute / 2) * 3.14f / 180 - 3.14f / 2) * 30 + ycenter);&lt;br /&gt;
    // Erase if necessary, and redraw&lt;br /&gt;
    g.setColor(Color.lightGray);&lt;br /&gt;
    if (xsecond != lastxs || ysecond != lastys) {&lt;br /&gt;
      g.drawLine(xcenter, ycenter, lastxs, lastys);&lt;br /&gt;
    }&lt;br /&gt;
    if (xminute != lastxm || yminute != lastym) {&lt;br /&gt;
      g.drawLine(xcenter, ycenter - 1, lastxm, lastym);&lt;br /&gt;
      g.drawLine(xcenter - 1, ycenter, lastxm, lastym);&lt;br /&gt;
    }&lt;br /&gt;
    if (xhour != lastxh || yhour != lastyh) {&lt;br /&gt;
      g.drawLine(xcenter, ycenter - 1, lastxh, lastyh);&lt;br /&gt;
      g.drawLine(xcenter - 1, ycenter, lastxh, lastyh);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    g.setColor(Color.darkGray);&lt;br /&gt;
    g.drawLine(xcenter, ycenter, xsecond, ysecond);&lt;br /&gt;
   &lt;br /&gt;
    g.setColor(Color.red);&lt;br /&gt;
    g.drawLine(xcenter, ycenter - 1, xminute, yminute);&lt;br /&gt;
    g.drawLine(xcenter - 1, ycenter, xminute, yminute);&lt;br /&gt;
    g.drawLine(xcenter, ycenter - 1, xhour, yhour);&lt;br /&gt;
    g.drawLine(xcenter - 1, ycenter, xhour, yhour);&lt;br /&gt;
    lastxs = xsecond;&lt;br /&gt;
    lastys = ysecond;&lt;br /&gt;
    lastxm = xminute;&lt;br /&gt;
    lastym = yminute;&lt;br /&gt;
    lastxh = xhour;&lt;br /&gt;
    lastyh = yhour;&lt;br /&gt;
  }&lt;br /&gt;
  public void start() {&lt;br /&gt;
    if (thread == null) {&lt;br /&gt;
      thread = new Thread(this);&lt;br /&gt;
      thread.start();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void stop() {&lt;br /&gt;
    thread = null;&lt;br /&gt;
  }&lt;br /&gt;
  public void run() {&lt;br /&gt;
    while (thread != null) {&lt;br /&gt;
      try {&lt;br /&gt;
        Thread.sleep(100);&lt;br /&gt;
      } catch (InterruptedException e) {&lt;br /&gt;
      }&lt;br /&gt;
      repaint();&lt;br /&gt;
    }&lt;br /&gt;
    thread = null;&lt;br /&gt;
  }&lt;br /&gt;
  public void update(Graphics g) {&lt;br /&gt;
    paint(g);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame window = new JFrame();&lt;br /&gt;
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    window.setBounds(30, 30, 300, 300);&lt;br /&gt;
    Clock clock = new Clock();&lt;br /&gt;
    window.getContentPane().add(clock);&lt;br /&gt;
    window.setVisible(true);&lt;br /&gt;
    clock.start();&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;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>