Total members 11890 |It is currently Wed Apr 24, 2024 8:29 am Login / Join Codemiles

Java

C/C++

PHP

C#

HTML

CSS

ASP

Javascript

JQuery

AJAX

XSD

Python

Matlab

R Scripts

Weka





Thread of Event Dispatcher
Code:
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
import javax.swing.table.*;

public class EventDispatcherExample extends JPanel {
 boolean running;
 int red = 0;
 int blue = 1;
 int s = 2;
 int thread;
 ColorTableModel colorTableModel= new ColorTableModel();
 Thread colorShadeThread;

  public EventDispatcherExample() {
    JTable table = new JTable(colorTableModel);
    table.setRowHeight(100);
    table.setDefaultRenderer(Object.class, new ColorRenderer());
    add(table);
    ButtonGroup value = new ButtonGroup();
    JButton button1 = new JButton("Red");
    value.add(button1);
    button1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        thread = red;
      }
    });
    JButton button2 = new JButton("Blue");
    value.add(button2);
    button2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        thread = blue;
      }
    });
    add(button1);
    add(button2);
    
    this
.running = true;
    this.colorShadeThread = new Thread(new RandomColorShadeRunnable());
    this.colorShadeThread.start();
  }
  private class ColorTableModel extends AbstractTableModel {
    private Color[][] colors = new Color[3][3];

    public ColorTableModel() {
      for (int i = 0; i < s; i++) {
        for (int j = 0; j < s; j++) {
          colors[i][j] = Color.white;
        }
      }
    }
  public int getRowCount() {
      return s;
    }
  public int getColumnCount() {
      return s;
    }
  public Object getValueAt(int rowIndex, int columnIndex) {
      return colors[rowIndex][columnIndex];
    }
  public void generateRandomColor(int type) {
      Random random = new Random(System.currentTimeMillis());
      final int row = random.nextInt(s);
      final int column = random.nextInt(s);
      final Color color;
      if (type == red) {
        color = new Color(random.nextInt(200), 0, 0);
      } else if (type == blue) {
        color = new Color(0, 0, random.nextInt(200));
      } else {
        color = new Color(random.nextInt(200), random.nextInt(200), 
            random
.nextInt(200));
      }

      if (SwingUtilities.isEventDispatchThread()) {
        colors[row][column] = color;
        fireTableCellUpdated(row, column);
      } else {
        SwingUtilities.invokeLater(new Runnable() {
          public void run() {
            colors[row][column] = color;
            fireTableCellUpdated(row, column);
          }
        });
      }
    }
  }
   private class ColorRenderer implements TableCellRenderer {
    private JLabel label;

    public ColorRenderer() {
      label = new JLabel();
      label.setOpaque(true);
      label.setPreferredSize(new Dimension(102, 102));
    }
   public Component getTableCellRendererComponent(JTable table, Object 
      value
,boolean isSelected,boolean hasFocus, int row, int column) {
      label.setBackground((Color) value);
      return label;
    }
  }
  private class RandomColorShadeRunnable implements Runnable {
    public void run() {
      while (running) {
        colorTableModel.generateRandomColor(thread);
        try {
          Thread.sleep(600);
        } catch (Exception e) {}
      }
    }
  }
   public static void main(String[] args) {
    JFrame frame = new JFrame("Event Dispatch Example");
    frame.add(new EventDispatcherExample());
  frame.setSize(450,300);
    frame.setVisible(true);
  }
}
 





Attachments:
File comment: If you select the color red, output will be:
thread1.gif
thread1.gif [ 8.75 KiB | Viewed 7045 times ]
File comment: If you select the color blue, output will be:
thread2.gif
thread2.gif [ 8.49 KiB | Viewed 7051 times ]

_________________
M. S. Rakha, Ph.D.
Queen's University
Canada
Author:
Mastermind
User avatar Posts: 2715
Have thanks: 74 time
Post new topic Reply to topic  [ 1 post ] 

  Related Posts  to : Thread of Event Dispatcher
 relationship an event-listener interface & event handler     -  
 advantage of the event delegation model over event-inherit     -  
 daemon thread - What is the use of deamon thread?     -  
 Thread Safe     -  
 initial state of thread     -  
 Multi Thread Program     -  
 invokes a thread's run() method     -  
 Plz Help,I want BOTH THREAD to work at a time in SAME WINDOW     -  
 high-level thread states     -  
 thread state when it terminates its processing     -  



Topic Tags

Java Threads






Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
All copyrights reserved to codemiles.com 2007-2011
mileX v1.0 designed by codemiles team
Codemiles.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to Amazon.com