Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #16348

Re: NetBeans Application with sortable Table and pre-existing frame/table code

Path csiph.com!usenet.pasdenom.info!gegeweb.org!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From Nigel Wade <nmw@ion.le.ac.uk>
Newsgroups comp.lang.java.programmer
Subject Re: NetBeans Application with sortable Table and pre-existing frame/table code
Date Wed, 25 Jul 2012 16:40:20 +0100
Lines 245
Message-ID <a7aib5FuoqU1@mid.individual.net> (permalink)
References <e4d9d3b6-0457-45c8-9bf3-6f7bbe0da09a@googlegroups.com> <2c4cb42d-92d9-48a6-9d69-0f63c5461070@googlegroups.com> <ff39b71a-20af-45b7-9123-4403d6e8b6d0@googlegroups.com>
Mime-Version 1.0
Content-Type text/plain; charset=ISO-8859-1
Content-Transfer-Encoding 7bit
X-Trace individual.net 3dnbvBjV0q7ZXF+ycQDSrAeIbPjtx/zuBOp/s+U4QfB4mVCVurd/3Xh/OG5VTXyVXg
Cancel-Lock sha1:fHZoK9SzwMt+3/DIMXpsfawV7Qw=
User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120421 Thunderbird/12.0
In-Reply-To <ff39b71a-20af-45b7-9123-4403d6e8b6d0@googlegroups.com>
Xref csiph.com comp.lang.java.programmer:16348

Show key headers only | View raw


On 25/07/12 15:54, clusardi2k@aol.com wrote:
> How do I get this modified code to work.
> 
> I modified the working/good code from the attached link to the below code. The reason I do not want to use the code exactly on this link is it creates a new window and doesn't use the form that I already am using. The pre-existing form has jPanel1 (swing JPanel) containing jPanel3 (swing JPanel). And, jPanel3 contains jTable1 (swing JTable).
> 
> http://www.java-tips.org/java-se-tips/javax.swing/sorting-and-filtering-tables.html
> 
> (jTable1 was dragged to the form from the swing control  palette. Design view shows a table with 4 columns and 4 rows, but the area is blanked out when I run the project!)
> 
> The below code compiles and runs, but the form's jTable1 is not populated with the data.
> 
> Thanks  for any help,
> 
> ...
> 
> import java.awt.BorderLayout;
> import java.awt.EventQueue;
> import javax.swing.*;
> import javax.swing.table.DefaultTableModel;
> import javax.swing.table.TableModel;
> import javax.swing.table.TableRowSorter;
> 
>         Runnable runner = new Runnable() {
>          public void run() {
>             //JFrame frame = new JFrame("Sorting JTable");
>             //frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
>             Object rows[][] = {
>                 {"AMZN", "Amazon", 41.28},
>                 {"EBAY", "eBay", 41.57},
>                 {"GOOG", "Google", 388.33},
>                 {"MSFT", "Microsoft", 26.56},
>                 {"NOK", "Nokia Corp", 17.13},
>                 {"ORCL", "Oracle Corp.", 12.52},
>                 {"SUNW", "Sun Microsystems", 3.86},
>                 {"TWX",  "Time Warner", 17.66},
>                 {"VOD",  "Vodafone Group", 26.02},
>                 {"YHOO", "Yahoo!", 37.69}
>               };
>             String columns[] = {"Symbol", "Name", "Price"};
>             TableModel model =
>                 new DefaultTableModel(rows, columns) {
>               public Class getColumnClass(int column) {
>                 Class returnValue;
>                 if ((column>= 0)&&  (column<  getColumnCount())) {
>                   returnValue = getValueAt(0, column).getClass();
>                 } else {
>                   returnValue = Object.class;
>                 }
>                 return returnValue;
>               }
>             };
> 
>             //JTable table = new JTable(model);
>             RowSorter<TableModel>  sorter =
>               new TableRowSorter<TableModel>(model);
>             jTable1.setRowSorter(sorter);
>             JScrollPane pane = new JScrollPane(jTable1);

I don't think you want to be doing this. 
I presume the jTable1 already exists, and has a parent.

>             //frame.add(pane, BorderLayout.CENTER);
>             //frame.setSize(300, 150);
>             jPanel3.setVisible(true);
>             jPanel3.add(pane, BorderLayout.CENTER);
>             jTable1.setVisible(true);
>           }
>         };
>         EventQueue.invokeLater(runner);
> 

Nowhere that I can see are you setting the new table model in jTable1.

The code below works. It's just a basic JFrame app. created in NetBeans, with the code 
inserted to set the model/sorter for the default table. If you don't change the model
the code will throw OOB exception because the model data in the sorter only has 3 columns,
and the default table created by Matisse has 4.


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication2;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.RowSorter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

/**
 *
 * @author NetBeans
 */
public class NewJFrame extends javax.swing.JFrame {

  /**
   * Creates new form NewJFrame
   */
  public NewJFrame() {
    initComponents();

    Runnable runner = new Runnable() {

      public void run() {
        Object rows[][] = {
          {"AMZN", "Amazon", 41.28},
          {"EBAY", "eBay", 41.57},
          {"GOOG", "Google", 388.33},
          {"MSFT", "Microsoft", 26.56},
          {"NOK", "Nokia Corp", 17.13},
          {"ORCL", "Oracle Corp.", 12.52},
          {"SUNW", "Sun Microsystems", 3.86},
          {"TWX", "Time Warner", 17.66},
          {"VOD", "Vodafone Group", 26.02},
          {"YHOO", "Yahoo!", 37.69}
        };
        String columns[] = {"Symbol", "Name", "Price"};
        TableModel model =
                new DefaultTableModel(rows, columns) {

                  public Class getColumnClass(int column) {
                    Class returnValue;
                    if ((column >= 0) && (column < getColumnCount())) {
                      returnValue = getValueAt(0, column).getClass();
                    }
                    else {
                      returnValue = Object.class;
                    }
                    return returnValue;
                  }
                };

        RowSorter<TableModel> sorter =
                new TableRowSorter<TableModel>(model);
        jTable1.setModel(model);
        jTable1.setRowSorter(sorter);
      }
    };

    EventQueue.invokeLater(runner);
  }

  /**
   * This method is called from within the constructor to initialize the form.
   * WARNING: Do NOT modify this code. The content of this method is always
   * regenerated by the Form Editor.
   */
  @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>

  /**
   * @param args the command line arguments
   */
  public static void main(String args[]) {
    /*
     * Set the Nimbus look and feel
     */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
     * If Nimbus (introduced in Java SE 6) is not available, stay with the
     * default look and feel. For details see
     * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
     */
    try {
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
        if ("Nimbus".equals(info.getName())) {
          javax.swing.UIManager.setLookAndFeel(info.getClassName());
          break;
        }
      }
    }
    catch (ClassNotFoundException ex) {
      java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    catch (InstantiationException ex) {
      java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    catch (IllegalAccessException ex) {
      java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    catch (javax.swing.UnsupportedLookAndFeelException ex) {
      java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /*
     * Create and display the form
     */
    java.awt.EventQueue.invokeLater(new Runnable() {

      public void run() {
        new NewJFrame().setVisible(true);
      }
    });
  }
    // Variables declaration - do not modify
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration
}

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

NetBeans Application with sortable Table and pre-existing frame/table code clusardi2k@aol.com - 2012-07-23 10:54 -0700
  Re: NetBeans Application with sortable Table and pre-existing frame/table code Lew <lewbloch@gmail.com> - 2012-07-23 12:55 -0700
    Re: NetBeans Application with sortable Table and pre-existing frame/table code clusardi2k@aol.com - 2012-07-25 07:54 -0700
      Re: NetBeans Application with sortable Table and pre-existing frame/table code clusardi2k@aol.com - 2012-07-25 08:14 -0700
      Re: NetBeans Application with sortable Table and pre-existing frame/table code clusardi2k@aol.com - 2012-07-25 08:37 -0700
      Re: NetBeans Application with sortable Table and pre-existing   frame/table code Nigel Wade <nmw@ion.le.ac.uk> - 2012-07-25 16:40 +0100
        Re: NetBeans Application with sortable Table and pre-existing   frame/table code clusardi2k@aol.com - 2012-07-25 09:31 -0700

csiph-web