FileDocCategorySizeDatePackage
TableExample2.javaAPI DocExample7603Sat Sep 12 03:01:00 BST 1998None

TableExample2

public class TableExample2 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.7 02/04/98
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 TableExample2()

        mainPanel = new JPanel();

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

	// Create the buttons.
	showConnectionInfoButton = new JButton("Configuration");
	fetchButton = new JButton("Fetch");

        fetchButton.addActionListener(new QueryChangeListener());
        showConnectionInfoButton.addActionListener(
                   new ShowConnectionInfoListener());

	// 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("TableExample2");
        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 JScrollPanecreateTable()

        sorter = new TableSorter();

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

        // Create the table
        JTable tableView = new JTable(sorter);

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

        JScrollPane scrollpane = JTable.createScrollPaneForTable(tableView);

        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 TableExample2();
    
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)