swing/samples/net/sf/xframe/swing/demo JXTableDemo4.java,NONE,1.1

Kurt Riede <[email protected]> Sat, 09 Apr 2005 15:53:44 +0000
Newsgroups gmane.text.xml.xframe.xsddoc.devel
Message-ID <[email protected]>
Update of /cvsroot/xframe/swing/samples/net/sf/xframe/swing/demo
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3360/samples/net/sf/xframe/swing/demo

Added Files:
	JXTableDemo4.java 
Log Message:
new tests to demonstrate usage of method prepareRenderer() and class DefaultJXTableCellRenderer

--- NEW FILE: JXTableDemo4.java ---
package net.sf.xframe.swing.demo;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;

import net.sf.xframe.swing.JXTable;

/**
 * Demonstrates the use of method
 * {@link net.sf.xframe.swing.JXTable#prepareRenderer prepareRenderer}.
 *
 * @author <a href=mailto:[email protected]>Kurt Riede</a>
 */
public final class JXTableDemo4 {

    /**
     * Static main method.
     * @param args arguments
     */
    public static void main(final String[] args) {
        new JXTableDemo4().run();
    }

    /**
     * Our own table model.
     */
    private final class MyTableModel extends DefaultTableModel {

        private MyTableModel(final int rowCount, final int columnCount) {
            super(rowCount, columnCount);
        }

        public boolean isCellEditable(final int row, final int column) {
            return ((row + column) % 2) == 0;
        }
    }

    /**
     * Run the demo.
     */
    public void run() {
        // create the demo frame
        final JFrame frame = new JFrame("JXTable Demo");
        final BorderLayout layout = new BorderLayout();
        frame.getContentPane().setLayout(layout);
        // create and add the table
        final TableModel model1 = new MyTableModel(15, 23);
        final TableModel model2 = new MyTableModel(15, 13);
        final JXTable table = new JXTable(model1, 3) {
            public Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {
                final Component c = super.prepareRenderer(renderer, row, column);
                final int col = getColumnModel().getColumn(column).getModelIndex();
                if (((row + col) % 2) != 0) {
                    c.setBackground(Color.LIGHT_GRAY);
                } else {
                    c.setBackground(Color.WHITE);
                }
                return c;
            }
        };
        table.setModel(model2);
        table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        frame.getContentPane().add(table, BorderLayout.CENTER);

        // create some buttons to change the number of frozen columns
        final JPanel buttonPanel = new JPanel();
        frame.getContentPane().add(buttonPanel, BorderLayout.NORTH);
        buttonPanel.setLayout(new FlowLayout());
        for (int i = 0; i < 10; i++) {
            final JButton button = new JButton("Freeze " + i);
            final int num = i;
            button.addActionListener(new ActionListener() {
                public void actionPerformed(final ActionEvent e) {
                    table.setFrozenColumns(num);
                }
            });
            buttonPanel.add(button);
        }
        // set size, center and show the demo frame
        frame.setSize(650, 300);
        final Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        final Dimension frameSize = frame.getSize();
        frame.setLocation((screen.width - frameSize.width) / 2, (screen.height - frameSize.height) / 2);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click