www.pudn.com > tame.rar > ColoredCellTableExample.java


/* (swing1.1beta3) */
package tame.examples;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;

import tame.colorchooser.TextColorChooser;
import tame.table.AttributiveCellRenderer;
import tame.table.AttributiveCellTableModel;
import tame.table.ColoredCell;

/**
@author Nobuo Tamemasa
@version 1.0 11/22/98
*/
public class ColoredCellTableExample extends JFrame {
  private JTable table;
  private ColoredCell cellAtt;

  public ColoredCellTableExample() {
    super( "Colored Cell Example" );

    AttributiveCellTableModel ml = new AttributiveCellTableModel(10,6);
    cellAtt =(ColoredCell)ml.getCellAttribute();
    table = new JTable( ml );
    table.setCellSelectionEnabled(true);
    table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
    table.setDefaultRenderer(Object.class ,new AttributiveCellRenderer());
    JScrollPane scroll = new JScrollPane( table );

    JButton b_fore   = new JButton("Foreground");
    b_fore.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        changeColor(true);
      }
    });
    JButton b_back   = new JButton("Background");
    b_back.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        changeColor(false);
      }
    });
    JPanel p_buttons = new JPanel();
    p_buttons.setLayout(new GridLayout(2,1));
    p_buttons.add(b_fore);
    p_buttons.add(b_back);
    Box box = new Box(BoxLayout.X_AXIS);
    box.add(scroll);
    box.add(new JSeparator(SwingConstants.HORIZONTAL));
    box.add(p_buttons);
    getContentPane().add( box );
    setSize( 400, 200 );
    setVisible(true);
  }

  private final void changeColor(boolean isForeground) {
    int[] columns = table.getSelectedColumns();
    int[] rows    = table.getSelectedRows();
    if ((rows == null) || (columns == null)) return;
    if ((rows.length<1)||(columns.length<1)) return;
    Color target    = cellAtt.getForeground(rows[0], columns[0]);
    Color reference = cellAtt.getBackground(rows[0], columns[0]);
    for (int i=0;i