Link to home
Start Free TrialLog in
Avatar of tolgss
tolgss

asked on

How do I display entered data in a JTable

Hi, I need code-fixing in a small java program.

This will help me understand how to add objects into an array or vector and display it in a simple JTable.

The program displays entered data in a simple JTable.
I have 2 classes with incomplete code that has errors. I require a few lines of code-fixing to get the programming working correctly.

Code  has a Data class for retrieving data with setters and getters, and Demo class to run the program.

It has a name and income JTextField for input. Input and Report as action buttons.

Each time the input button is clicked the entered information is saved into an array of objects or vector for storage. After several inputs when the report button is clicked it should show the stored array or vector in a simple JTable for display.

public class Data{
 
        private String m_name;
        private double m_income;
        
        public Data(){
        }
        public Data(String name, double income){
            m_name = name;
            m_income = income;
        }       
        public String getName(){
            return m_name;
        }
        public void setName(String name){
            m_name = name;
        }
        public double getIncome(){
            return m_income;
        }
        public void setIncome(double income){
            m_income = income;
        }
    }
 
 
import javax.swing.*;
import java.awt.*;
import java.awt.event.*; 
 
public class Demo extends JFrame{
    private JTable table; 
    private Data tableData;
    private Data array[];
    private Data data[][];
    JTextField tfName, tfIncome;
 
    public Demo(){
        //create user entry fields
        tableData = new Data();
        JLabel lbName = new JLabel("Name:");
        JLabel lbIncome = new JLabel("Income:");        
        tfName = new JTextField("");
        tfIncome = new JTextField("");
        final JButton btInput = new JButton("Input");
        JButton btReport = new JButton("Report");
        JPanel p1 = new JPanel(new GridLayout(1,2));
        p1.add(lbName, BorderLayout.WEST); 
        p1.add(tfName, BorderLayout.EAST);
        JPanel p2 = new JPanel(new GridLayout(1,2));
        p2.add(lbIncome, BorderLayout.WEST); p2.add(tfIncome, BorderLayout.EAST);
        JPanel p3 = new JPanel(new GridLayout(1,2));
        p3.add(btInput, BorderLayout.WEST); p3.add(btReport, BorderLayout.EAST);
        add(p1, BorderLayout.NORTH); add(p2, BorderLayout.CENTER);
        add(p3, BorderLayout.SOUTH);
        //button actions
        btInput.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                doInput();
            }
        });
        btReport.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                doReport();
            }});        
    }
    
    public void doInput(){
         String strName = tfName.getText();
         String strIncome = tfIncome.getText();
         double dbIncome = (Double.parseDouble(strIncome));
         tableData = new Data(strName, dbIncome);
         array = new Data[4];
         for(int i = 0; i< array.length; i++){
         array[i] = new Data(tableData.getName(), tableData.getIncome());
         }
        //         for(int i = 0; i<array.length; i++){
        //             System.out.println(array[i].getName()+ " " + array[i].getIncome());
        //         }
    }
    public  void createArray()
    {
 
        data = new Data[10][];
 
        final int ROWS = 10;
        final int COLS = 1;
 
        data = new Data[ROWS][COLS];
        for (int row = 0; row<data.length; row++)
        {
            for (int col = 0; col< COLS; col++)
            {
        //                data[ROWS][COLS] = array;
            }
        }
    }
 
    public void doReport()
    {            
        tfName.setText("");
        tfIncome.setText("");   
        tfName.requestFocus();        
        String columnNames[] = {"FullName", "Income"};
        //        table = new JTable(multiArray, columnNames);
        JScrollPane  scrollPane = new JScrollPane(table);
        final JFrame frame = new JFrame();
        frame.add(scrollPane, BorderLayout.CENTER);      
        frame.setBounds(100,100,900,400);
        frame.setResizable(true);
        frame.setVisible(true);
    }  
 
    public static void main(String[] args){    
           
        Demo objDemo = new Demo();
        objDemo.setBounds(700,200,280,100);
        objDemo.setVisible(true);
        objDemo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

Open in new window

Avatar of ksivananth
ksivananth
Flag of United States of America image

check this example, http://www.roseindia.net/java/example/java/swing/InsertRows.shtml

where it shows how to insert the row using table model. instead of insertRow, you can call addRow method for your case!
ASKER CERTIFIED SOLUTION
Avatar of ksivananth
ksivananth
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of tolgss
tolgss

ASKER

Thanks for your prompt solution. Really appreciate it.