# JTableSimpleExample.java Simple table that takes column names and data from arrays of Strings. import java.awt.*; import javax.swing.*; /** Simple JTable example that uses a String array for the * table header and table data. * */ public class JTableSimpleExample extends JFrame { public static void main(String[] args) { new JTableSimpleExample(); } private final int COLUMNS = 4; private final int ROWS = 15; private JTable sampleJTable; public JTableSimpleExample() { super("Creating a Simple JTable"); WindowUtilities.setNativeLookAndFeel(); addWindowListener(new ExitListener()); Container content = getContentPane(); String[] columnNames = buildColumnNames(COLUMNS); String[][] tableCells = buildTableCells(ROWS, COLUMNS); sampleJTable = new JTable(tableCells, columnNames); JScrollPane tablePane = new JScrollPane(sampleJTable); content.add(tablePane, BorderLayout.CENTER); setSize(450,150); setVisible(true); } private String[] buildColumnNames(int columns) { String[] header = new String[columns]; for(int i=0; i<columns ; i++) { header[i] = "Column " + i; } return(header); } private String[][] buildTableCells(int rows, int columns) { String[][] cells = new String[rows][columns]; for(int i=0; i<rows ; i++) { for(int j=0; j<columns; j++ ) { cells[i][j] = "Row " + i + ", Col " + j; } } return(cells); } } */ # DefaultTableExample.java A dynamic table (rows can be added or deleted) using a DefaultTableModel. import java.util.Vector; import javax.swing.*; import javax.swing.table.*; /** JTable that uses the DefaultTableModel, which permits * adding rows and columns programmatically. * */ public class DefaultTableExample extends JTable { private String[] columnNames = { "Flag", "City", "Country", "Comment", "Visited" }; public DefaultTableExample() { this(new DefaultTableModel()); } public DefaultTableExample(DefaultTableModel model) { super(model); JavaLocationCollection collection = new JavaLocationCollection(); JavaLocation[] locations = collection.getLocations(); // Set up the column labels and data for the table model. int i; for(i=0; i<columnNames.length; i++ ) { model.addColumn(columnNames[i]); } for(i=0; i<locations.length; i++) { model.addRow(getRowData(locations[i])); } } private Vector getRowData(JavaLocation location) { Vector vector = new Vector(); vector.add(new ImageIcon(location.getFlagFile())); vector.add("Java"); vector.add(location.getCountry()); vector.add(location.getComment()); vector.add(new Boolean(false)); return(vector); } public static void main(String[] args) { WindowUtilities.setNativeLookAndFeel(); WindowUtilities.openInJFrame( new JScrollPane(new DefaultTableExample()), 600, 150, "Using a DefaultTableModel"); } } # CustomTableExample.java An improved table that uses a CustomTableModel to correctly display cells containing images and boolean values. import javax.swing.*; import javax.swing.table.*; /** JTable that uses a CustomTableModel to correctly render * the table cells that contain images and boolean values. * */ public class CustomTableExample extends DefaultTableExample { public CustomTableExample() { super(new CustomTableModel()); setCellSizes(); } private void setCellSizes() { setRowHeight(50); getColumn("Flag").setMaxWidth(55); getColumn("City").setPreferredWidth(60); getColumn("Country").setMinWidth(80); getColumn("Comment").setMinWidth(150); // Call to resize columns in viewport (bug). sizeColumnsToFit(JTable.AUTO_RESIZE_OFF); } public static void main(String[] args) { WindowUtilities.setNativeLookAndFeel(); WindowUtilities.openInJFrame( new JScrollPane(new CustomTableExample()), 525, 255, "Using a CustomTableModel"); } } * CustomTableModel.java Returns the class type of a column (for use by the default cell renderers). import javax.swing.table.*; /** A custom DefaultTableModel that returns the class * type for the default cell renderers to use. The user is * restricted to editing only the Comment and Visited columns. * */ public class CustomTableModel extends DefaultTableModel { public Class getColumnClass(int column) { return(getValueAt(0, column).getClass()); } // Only permit edit of "Comment" and "Visited" columns. public boolean isCellEditable(int row, int column) { return(column==3 || column==4); } } **// * JavaLocationCollection.java A simple collection of JavaLocation (below) objects. * JavaLocation.java An object representing a city named Java. Defines the country where the Java city is located, along with a comment and country flag JTableEvents.java A table that reacts to the user entering data into a cell. import java.awt.*; import java.text.DecimalFormat; import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*; /** A JTable that responds to TableModelEvents and * updates other cells in the table, based on user input. * */ public class JTableEvents extends JFrame { private final int COL_COST = 1; private final int COL_QTY = 2; private final int COL_TOTAL = 3; private final int ROW_LAST = 5; private DecimalFormat df = new DecimalFormat("$####.##"); private JTable sampleJTable; private DefaultTableModel tableModel; public static void main(String[] args) { new JTableEvents(); } public JTableEvents() { super("Using TableEvents"); WindowUtilities.setNativeLookAndFeel(); addWindowListener(new ExitListener()); Container content = getContentPane(); String[] columnNames = { "Book", "Cost", "Qty", "Total" }; final Object[][] data = { {"Core Web Programming", "$ 0.99", "0", "$0.00"}, {"Core Servlets and JavaServer Pages", "$34.39", "0", "$0.00"}, {"Core Swing", "$39.99", "0", "$0.00"}, {"Core Java, Volume I", "$31.49", "0", "$0.00"}, {"Core Java, Volume II", "$34.39", "0", "$0.00"}, {null, null, "Grand:", "$0.00"} }; tableModel = new DefaultTableModel(data, columnNames); tableModel.addTableModelListener( new TableModelListener() { int row, col; int quantity; float cost, subTotal, grandTotal; public void tableChanged(TableModelEvent event) { row = event.getFirstRow(); col = event.getColumn(); // Only update table if a new book quantity entered. if (col == COL_QTY) { try { cost = getFormattedCellValue(row, COL_COST); quantity = (int)getFormattedCellValue(row, COL_QTY); subTotal = quantity * cost; // Update row total. tableModel.setValueAt(df.format(subTotal), row, COL_TOTAL); // Update grand total. grandTotal =0; for(int row=0; row<data.length-1; row++) { grandTotal += getFormattedCellValue(row, COL_TOTAL); } tableModel.setValueAt(df.format(grandTotal), ROW_LAST,COL_TOTAL); tableModel.fireTableDataChanged(); } catch (NumberFormatException nfe) { // Send error message to user. JOptionPane.showMessageDialog( JTableEvents.this, "Illegal value entered!"); } } } private float getFormattedCellValue(int row, int col) { String value = (String)tableModel.getValueAt(row, col); return(Float.parseFloat(value.replace('$',' '))); } }); sampleJTable = new JTable(tableModel); setColumnAlignment(sampleJTable.getColumnModel()); JScrollPane tablePane = new JScrollPane(sampleJTable); content.add(tablePane, BorderLayout.CENTER); setSize(460,150); setVisible(true); } // Right-align all but the first column. private void setColumnAlignment(TableColumnModel tcm) { TableColumn column; DefaultTableCellRenderer renderer = new DefaultTableCellRenderer(); for(int i=1; i<tcm.getColumnCount(); i++) { column = tcm.getColumn(i); renderer.setHorizontalAlignment(SwingConstants.RIGHT); column.setCellRenderer(renderer); } } } **//
Note: Brought from our old site: http://www.salearningschool.com/example_codes/ on Jan 2nd, 2017 From: http://sitestree.com/?p=10301
Categories:Programming Code Examples, Java/J2EE/J2ME, Advanced Swing
Tags:Java/J2EE/J2MEAdvanced Swing
Post Data:2017-01-02 16:04:31
Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada