-
JTable problem
hi,
I need to list a all the files one by one in a JTable...I am sending you
the code..below..it is displaying only one row with the first 4 files, how
do I get the list of other files into the other rows...pls let me know...
createTableData();
createTableHeadings();
JTable tblDisplay ;
tblDisplay = new JTable(tableData, tableHeadings);
tblDisplay.setRowHeight(20);
private void createTableData()
{
FileTransferControl ftc = new FileTransferControl();
String dirName = "D:/Msat/config/";
fileNames= ftc.listDirectory(dirName);
Vector row1 = new Vector();
Vector row2 = new Vector();
Vector row3 = new Vector();
Vector row4 = new Vector();
Vector row5 = new Vector();
for(int i=0;i<fileNames.length;i++)
{
System.out.println(fileNames[i]);
row1.addElement(fileNames[i]);
// I dont know the logic to implement here...pls help
}
tableData.addElement(row1);
tableData.addElement(row2);
tableData.addElement(row3);
tableData.addElement(row4);
}
private void createTableHeadings()
{
tableHeadings.addElement("Filename");
tableHeadings.addElement("OAM");
tableHeadings.addElement("Telepath");
tableHeadings.addElement("MSAT");
}
Satish
-
Re: JTable problem
Try with these file, which contains jTable.
and let me know if you need any further assistance from me.
====================================
import java.sql.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import javax.swing.tree.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
public class DbProject extends JFrame
implements ActionListener, TreeSelectionListener
{
private JTextField tfSqlStr;
private JTextArea status;
private JMenuBar menubar;
private JMenu filemenu;
private JMenuItem exititem, clearitem;
private JScrollPane tableScroll;
private JTable dbTable;
ResultsModel model;
private JScrollPane treeScroll;
private DefaultMutableTreeNode dbNode; // Root node for the database
tree
private DefaultTreeModel dbTreeModel;
private JTree dbTree;
private JPanel pN;
private JSplitPane split;
String userid = "";
String pass = "";
String url = "jdbc dbc:admin";
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
Connection conn;
Statement state;
public static void main(String[] args)
{
DbProject dbInst = new DbProject();
dbInst.setSize(500, 400);
dbInst.setVisible(true);
}
public DbProject()
{
super("JDBC Project");
getContentPane().setLayout(new BorderLayout());
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
pN = new JPanel();
pN.setLayout(new FlowLayout());
pN.add(new JLabel("Enter SQL String:"));
pN.add(tfSqlStr = new JTextField(35));
tfSqlStr.addActionListener(this); //register ActionListener
getContentPane().add(pN, BorderLayout.NORTH);
menubar = new JMenuBar();
filemenu = new JMenu("File");
filemenu.setMnemonic('F');
exititem = new JMenuItem("Exit");
clearitem = new JMenuItem("Clear");
exititem.addActionListener(this); //register ActionListener
clearitem.addActionListener(this); //register ActionListener
filemenu.add(clearitem);
filemenu.add(exititem);
menubar.add(filemenu);
setJMenuBar(menubar);
// Create tree to go in left split pane
dbNode = new DefaultMutableTreeNode("No database");
dbTreeModel = new DefaultTreeModel(dbNode);
dbTree = new JTree(dbTreeModel);
dbTree.addTreeSelectionListener(this);
// Create table to go in right split pane
model = new ResultsModel();
dbTable = new JTable(model);
dbTable.setPreferredSize(new Dimension(800,400));
dbTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
treeScroll = new JScrollPane(dbTree);
treeScroll.setBorder(BorderFactory.createLineBorder(Color.darkGray));
tableScroll = new JScrollPane(dbTable);
tableScroll.setBorder(BorderFactory.createLineBorder(Color.darkGray));
//split = new JSplitPane(HORIZONTAL_SPLIT, true, treeScroll, tableScroll);
split = new JSplitPane();
split.setOrientation(1);
split.setContinuousLayout(true);
split.setLeftComponent(treeScroll);
split.setRightComponent(tableScroll);
getContentPane().add(split, BorderLayout.CENTER);
status = new JTextArea();
status.setEditable(false);
getContentPane().add(status, BorderLayout.SOUTH);
try
{
Class.forName(driver);
conn = DriverManager.getConnection(url, userid, pass);
state = conn.createStatement();
dbNode = new DefaultMutableTreeNode(url); // Root node is URL
dbTreeModel.setRoot(dbNode); // Set root in model
setupTree(conn.getMetaData()); // Set up tree with
metadata
treeScroll.setBorder(BorderFactory.createTitledBorder(
BorderFactory.createLineBorder(Color.darkGray),
url,
TitledBorder.CENTER,
TitledBorder.DEFAULT_POSITION));
dbTree.setRootVisible(false); // Now show the root
node
dbTreeModel.reload(); // Get the tree
redisplayed
}
catch(ClassNotFoundException cnfe)
{
System.err.println(cnfe);
tfSqlStr.setText("Driver load failed" + cnfe);
}
catch(SQLException sqle)
{
System.err.println(sqle); // error connection to
database
}
tfSqlStr.requestFocus();
}
public void actionPerformed(ActionEvent evt)
{
//String actionCommand = evt.getActionCommand();
Object source = evt.getSource();
if(source.equals(tfSqlStr))
{
try
{
String sql = tfSqlStr.getText();
model.setResultSet(state.executeQuery(sql));
status.setText("Resultset has " + model.getRowCount() + " rows.");
}
catch(SQLException sqle)
{
status.setText(sqle.getMessage());
}
}
else if(source.equals(clearitem))
{
tfSqlStr.setText("");
}
else if(source.equals(exititem))
{
dispose();
System.exit(0);
}
}
private void setupTree(DatabaseMetaData metadata) throws SQLException
{
String[] tableTypes = { "TABLE"}; // We want only
tables
ResultSet tables = metadata.getTables( // Get the tables
info
null,
null,
null,
tableTypes);
String tableName; // Stores a table name
DefaultMutableTreeNode tableNode; // Stores a tree node for
a table
while(tables.next()) // For each table
{
tableName = tables.getString("TABLE_NAME"); // get the table
name
tableNode = new DefaultMutableTreeNode(tableName);
dbNode.add(tableNode); // Add the node to
the tree
// Get all the columns for the current table
ResultSet columnNames = metadata.getColumns(null, null, tableName,
null);
// Add nodes for the columns as children of the table node
while(columnNames.next())
tableNode.add(
new
DefaultMutableTreeNode(columnNames.getString("COLUMN_NAME")));
}
}
public void valueChanged(TreeSelectionEvent e)
{
TreePath[] paths = dbTree.getSelectionPaths();
if(paths == null)
return;
boolean tableSelected = false; // Set true if a table is
selected
String column; // Stores a column name from
a path
String table; // Stores a table name from
a path
String columnsParam = null; // Column names in SQL
SELECT
String tableParam = null; // Table name in SQL SELECT
String message = null; // Message for status area
for(int j = 0; j < paths.length ; j++)
{
switch(paths[j].getPathCount())
{
case 2: // We have a table selected
tableParam = (String)
(((DefaultMutableTreeNode)
(paths[j].getPathComponent(1))).getUserObject());
columnsParam = "*"; // Select all columns
tableSelected = true; // Set flag for a table
selected
message = "Complete " + tableParam + " table displayed";
break;
case 3: // Column selected
table = (String)
(((DefaultMutableTreeNode)
(paths[j].getPathComponent(1))).getUserObject());
if(tableParam == null)
tableParam = table;
else if(tableParam != table)
break;
column = (String)
(((DefaultMutableTreeNode)
(paths[j].getPathComponent(2))).getUserObject());
if(columnsParam == null) // If no previous columns
columnsParam = column; // add the column
else // otherwise
columnsParam += "," + column; // we need a comma too
message = columnsParam + " displayed from " + tableParam + "
table.";
break;
}
if(tableSelected) // If a table was selected
break; // we are done
}
if(message != null)
status.setText(message);
}
}
class ResultsModel extends AbstractTableModel
{
String[] columnNames = new String[0];
Vector dataRows; // Empty vector of rows
public void setResultSet(ResultSet results)
{
if(results == null)
{
columnNames = new String[0]; // Reset the columns names
dataRows.clear(); // Remove all entries in the
Vector
fireTableChanged(null); // Tell the table there is new
model data
return;
}
try
{
ResultSetMetaData metadata = results.getMetaData();
int columns = metadata.getColumnCount(); // Get number of columns
columnNames = new String[columns]; // Array to hold names
// Get the column names
for(int i = 0; i < columns; i++)
columnNames[i] = metadata.getColumnLabel(i+1);
// Get all rows.
dataRows = new Vector(); // New Vector to store
the data
String[] rowData; // Stores one row
while(results.next()) // For each row...
{
rowData = new String[columns]; // create array to hold
the data
for(int i = 0; i < columns; i++) // For each column
rowData[i] = results.getString(i+1); // retrieve the data item
dataRows.addElement(rowData); // Store the row in the
vector
}
fireTableChanged(null); // Signal the table there is new
model data
}
catch (SQLException sqle)
{
System.err.println(sqle);
}
}
public int getColumnCount()
{
return columnNames.length;
}
public int getRowCount()
{
if(dataRows == null)
return 0;
else
return dataRows.size();
}
public Object getValueAt(int row, int column)
{
return ((String[])(dataRows.elementAt(row)))[column];
}
public String getColumnName(int column)
{
return columnNames[column] == null ? "No Name" : columnNames[column];
}
}
====================================
"satish" <satish_141@yahoo.com> wrote in message
news:3bf145f2@147.208.176.211...
>
> hi,
>
> I need to list a all the files one by one in a JTable...I am sending you
> the code..below..it is displaying only one row with the first 4 files, how
> do I get the list of other files into the other rows...pls let me know...
>
> createTableData();
> createTableHeadings();
> JTable tblDisplay ;
>
> tblDisplay = new JTable(tableData, tableHeadings);
> tblDisplay.setRowHeight(20);
>
> private void createTableData()
> {
>
> FileTransferControl ftc = new FileTransferControl();
> String dirName = "D:/Msat/config/";
> fileNames= ftc.listDirectory(dirName);
> Vector row1 = new Vector();
> Vector row2 = new Vector();
> Vector row3 = new Vector();
> Vector row4 = new Vector();
> Vector row5 = new Vector();
>
> for(int i=0;i<fileNames.length;i++)
> {
> System.out.println(fileNames[i]);
> row1.addElement(fileNames[i]);
>
> // I dont know the logic to implement here...pls help
>
>
> }
>
> tableData.addElement(row1);
> tableData.addElement(row2);
> tableData.addElement(row3);
> tableData.addElement(row4);
>
>
>
>
>
>
>
> }
>
> private void createTableHeadings()
> {
> tableHeadings.addElement("Filename");
> tableHeadings.addElement("OAM");
> tableHeadings.addElement("Telepath");
> tableHeadings.addElement("MSAT");
>
> }
>
>
>
> Satish
>
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
Forum Rules
|
Top DevX Stories
Easy Web Services with SQL Server 2005 HTTP Endpoints
JavaOne 2005: Java Platform Roadmap Focuses on Ease of Development, Sun Focuses on the "Free" in F.O.S.S.
Wed Yourself to UML with the Power of Associations
Microsoft to Add AJAX Capabilities to ASP.NET
IBM's Cloudscape Versus MySQL
|
Bookmarks