FileDocCategorySizeDatePackage
TableExample.javaAPI DocExample8341Tue Jun 29 07:21:12 BST 1999None

TableExample

public class TableExample extends Object implements LayoutManager
A a UI around the JDBCAdaptor, allowing database data to be interactively fetched, sorted and displayed using Swing. NOTE: This example uses a modal dialog via the static convenience methods in the JOptionPane. Use of modal dialogs requires JDK 1.1.4 or greater.
version
1.13 04/23/99
author
Philip Milne

Fields Summary
static String[]
ConnectOptionNames
static String
ConnectTitle
Dimension
origin
JButton
fetchButton
JButton
showConnectionInfoButton
JPanel
connectionPanel
JFrame
frame
JLabel
userNameLabel
JTextField
userNameField
JLabel
passwordLabel
JTextField
passwordField
JTextArea
queryTextArea
JComponent
queryAggregate
JLabel
serverLabel
JTextField
serverField
JLabel
driverLabel
JTextField
driverField
JPanel
mainPanel
TableSorter
sorter
JDBCAdapter
dataBase
JScrollPane
tableAggregate
Constructors Summary
public TableExample()

        mainPanel = new JPanel();

        // Create the panel for the connection information
	createConnectionDialog();

	// Create the buttons.
	showConnectionInfoButton = new JButton("Configuration");
        showConnectionInfoButton.addActionListener(new ActionListener() {
	        public void actionPerformed(ActionEvent e) {
	            activateConnectionDialog();
	        }
	    }
	);

	fetchButton = new JButton("Fetch");
        fetchButton.addActionListener(new ActionListener() {
	        public void actionPerformed(ActionEvent e) {
	            fetch();
	        }
	    }
	);

	// Create the query text area and label.
        queryTextArea = new JTextArea("SELECT * FROM titles", 25, 25);
	queryAggregate = new JScrollPane(queryTextArea);
        queryAggregate.setBorder(new BevelBorder(BevelBorder.LOWERED));

        // Create the table.
        tableAggregate = createTable();
        tableAggregate.setBorder(new BevelBorder(BevelBorder.LOWERED));

	// Add all the components to the main panel.
        mainPanel.add(fetchButton);
        mainPanel.add(showConnectionInfoButton);
        mainPanel.add(queryAggregate);
        mainPanel.add(tableAggregate);
        mainPanel.setLayout(this);

        // Create a Frame and put the main panel in it.
        frame = new JFrame("TableExample");
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {System.exit(0);}});
        frame.setBackground(Color.lightGray);
        frame.getContentPane().add(mainPanel);
        frame.pack();
        frame.setVisible(false);
        frame.setBounds(200, 200, 640, 480);

	activateConnectionDialog();
    
Methods Summary
voidactivateConnectionDialog()
Brigs up a JDialog using JOptionPane containing the connectionPanel. If the user clicks on the 'Connect' button the connection is reset.


                              
      
	if(JOptionPane.showOptionDialog(tableAggregate, connectionPanel, ConnectTitle,
		   JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,
                   null, ConnectOptionNames, ConnectOptionNames[0]) == 0) {
	    connect();
            frame.setVisible(true);
	}
	else if(!frame.isVisible())
	    System.exit(0);
    
public voidaddLayoutComponent(java.lang.String s, java.awt.Component c)

public voidconnect()

       dataBase = new JDBCAdapter(
            serverField.getText(),
            driverField.getText(),
            userNameField.getText(),
            passwordField.getText());
       sorter.setModel(dataBase);
   
public voidcreateConnectionDialog()
Creates the connectionPanel, which will contain all the fields for the connection information.

 	// Create the labels and text fields.
	userNameLabel = new JLabel("User name: ", JLabel.RIGHT);
 	userNameField = new JTextField("guest");

	passwordLabel = new JLabel("Password: ", JLabel.RIGHT);
	passwordField = new JTextField("trustworthy");

        serverLabel = new JLabel("Database URL: ", JLabel.RIGHT);
	serverField = new JTextField("jdbc:sybase://dbtest:1455/pubs2");

	driverLabel = new JLabel("Driver: ", JLabel.RIGHT);
	driverField = new JTextField("connect.sybase.SybaseDriver");


	connectionPanel = new JPanel(false);
	connectionPanel.setLayout(new BoxLayout(connectionPanel,
						BoxLayout.X_AXIS));

	JPanel namePanel = new JPanel(false);
	namePanel.setLayout(new GridLayout(0, 1));
	namePanel.add(userNameLabel);
	namePanel.add(passwordLabel);
	namePanel.add(serverLabel);
	namePanel.add(driverLabel);

	JPanel fieldPanel = new JPanel(false);
	fieldPanel.setLayout(new GridLayout(0, 1));
	fieldPanel.add(userNameField);
	fieldPanel.add(passwordField);
	fieldPanel.add(serverField);
        fieldPanel.add(driverField);

	connectionPanel.add(namePanel);
	connectionPanel.add(fieldPanel);
    
public javax.swing.JScrollPanecreateTable()

        sorter = new TableSorter();

        //connect();
        //fetch();

        // Create the table
        JTable table = new JTable(sorter); 
	// Use a scrollbar, in case there are many columns. 
	table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 

        // Install a mouse listener in the TableHeader as the sorter UI.
        sorter.addMouseListenerToHeaderInTable(table);

        JScrollPane scrollpane = new JScrollPane(table);

        return scrollpane;
    
public voidfetch()

        dataBase.executeQuery(queryTextArea.getText());
    
public voidlayoutContainer(java.awt.Container c)

        Rectangle b = c.getBounds();
        int topHeight = 90;
        int inset = 4;
        showConnectionInfoButton.setBounds(b.width-2*inset-120, inset, 120, 25);
        fetchButton.setBounds(b.width-2*inset-120, 60, 120, 25);
        // queryLabel.setBounds(10, 10, 100, 25);
        queryAggregate.setBounds(inset, inset, b.width-2*inset - 150, 80);
        tableAggregate.setBounds(new Rectangle(inset,
                                               inset + topHeight,
                                               b.width-2*inset,
                                               b.height-2*inset - topHeight));
    
public static voidmain(java.lang.String[] s)

        new TableExample();
    
public java.awt.DimensionminimumLayoutSize(java.awt.Container c)

return origin;
public java.awt.DimensionpreferredLayoutSize(java.awt.Container c)

return origin;
public voidremoveLayoutComponent(java.awt.Component c)