Skip to Main Content

Java Programming

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Java Swing-how to get a value from a JTable to show dynamically in a JPanel

802079Oct 1 2010 — edited Oct 4 2010
I need the sum of values from the values entered in the JTable to be shown in the Score text field in the adjoining JPanel.
Also posted here - http://www.coderanch.com/t/512189/GUI/java/value-JTable-show-up-dynamically.
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
import javax.swing.table.DefaultTableCellRenderer;

import java.awt.*;
import java.util.*;
import java.awt.color.*;
import java.awt.event.*;

public class TableandPanel extends JFrame
{
	public static void main(String[] args)
	{
		JFrame frame = new JFrame("Table and Panel");
                                       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                       frame.setSize(100, 300);
        
                                        frame.setVisible(true);
  	  	String colHdrA = "Some Values";	        	  
  	  	TableofSums tableofSums = new TableofSums(10, colHdrA);
  	  	int sumValue = tableofSums.getSumValues();
  	  	String sumValueS = String.valueOf(sumValue);
  	  	SumValuesPanel newPanel = new SumValuesPanel( "Score", sumValueS, "Rank");
  	  	JPanel thePanel = new JPanel();
  	  	thePanel.add(new JScrollPane(tableofSums));
  	  	thePanel.add(newPanel);
  	  	frame.add(thePanel);
  	  	frame.pack();
		frame.setVisible(true);
	}
}

//---------table class starts here---------------------------

public class TableofSums extends JPanel implements TableModelListener
{
    public static void main(String[] args)
     {		
         SwingUtilities.invokeLater(new Runnable() 
            {
                public void run() 
                  {        	  
	    JFrame frame = new JFrame("Table");
	    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    frame.setSize(208, 230);
	    //frame.add(new JScrollPane(table));
	       frame.setVisible(true);
	       String colHdrA = "Some Values";	        	  
	       TableofSums tableofSums = new TableofSums(10, colHdrA);
	        frame.setContentPane(tableofSums);
	         //frame.add(new JScrollPane(timerepTable));
	      frame.pack();
	      frame.setVisible(true);
	              
	          }
	       });
	}
	
	private int noOfRows = 0;
	private JTable table;
	private String colName = null;
	private int sumValues = 0;
	
	public TableofSums(int noOfRows, String colName)
	{
		this.noOfRows = noOfRows;
		this.colName = colName;
		makeTable();		
	}
	
	private void makeTable()
	{
		Object columns[] = new Object[] {"<html><center>" + this.colName + "</center></html>"};
		
	    Object[][] data = new Object[noOfRows][1];
	    
	    for (int i = 0; i<noOfRows; i++)
	       {	    	  
	    	  data[0] = new Integer(0);		
}
DefaultTableModel model = new DefaultTableModel(data, columns);
model.addTableModelListener(this);
table = new JTable(model)
{
@Override
public boolean isCellEditable(int row, int column)
{
switch (column)
{
case 0: return true;
}
return false;
}

@Override
public Class<?> getColumnClass(int columnIndex)
{
switch (columnIndex)
{
case 0: return Integer.class;
}
return null;
}
};
table.setRowHeight(25);
table.setDefaultRenderer(Integer.class, new SomeCellRenderer());
this.add(new JScrollPane(table));
}

///--------------------------------tablemodellistener---------------------------------
//gets the values entered in the table and calculates the sum
//-------------------------------------------------------------------------------------------
public void tableChanged(TableModelEvent e)
{
System.out.println(e.getSource());
if(e.getType() == TableModelEvent.UPDATE)
{
int row = e.getFirstRow();
int column = e.getColumn();
TableModel model = table.getModel();
sumValues = 0;
for (int i=0; i<noOfRows; i++)
{
int intValue = (Integer)model.getValueAt(i, column);
sumValues += intValue;
}
System.out.println ("row modified: " + row + " sumValues: " + sumValues);
}

}
//--------------------------------------cell renderer------------------------------------------------------

public class SomeCellRenderer extends JLabel implements TableCellRenderer
{

public SomeCellRenderer()
{
setOpaque(true);
}

public Component getTableCellRendererComponent(JTable table, Object
value, boolean isSelected, boolean hasFocus, int row, int column)
{
String cellValue = String.valueOf(value);
this.setText(cellValue);
this.setBackground(Color.LIGHT_GRAY);
this.setHorizontalAlignment(SwingConstants.CENTER);
return this;
}
}
public int getSumValues()
{
return sumValues;
}
}


//-------------------------Panel Class Starts here-------------------------------------

public class SumValuesPanel extends JPanel
{
/**
* @param args
*/
public static void main(String[] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("SumValuesPanel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
SumValuesPanel newContentPane = new SumValuesPanel( "Score", "XX.XX", "Rank");

frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
}

//------Variables declaration
private JPanel thePanel;
private JLabel scorejLabel;
private JTextField ScorejTextField;
private String scoreLabel;
private String scoreValue;
private JLabel rankLabel;
private String rankLabelTxt;
private JTextField rankTextField;
private String rankText;
//-------End of variables declaration

public SumValuesPanel (String setScoreLabel,String setScoreVal, String rankLabel)
{
scoreLabel = setScoreLabel;
scoreValue = setScoreVal;
this.rankLabelTxt = rankLabel;

createSumValuesPanel();
}

private void createSumValuesPanel()
{
thePanel = new JPanel();

rankLabel = new JLabel();
rankTextField = new JTextField();
scorejLabel = new JLabel();
ScorejTextField = new JTextField();

thePanel.setBackground(new Color(235, 233, 230));
thePanel.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0)));
thePanel.setPreferredSize(new Dimension(200, 180));

scorejLabel.setHorizontalAlignment(SwingConstants.CENTER);
scorejLabel.setText(scoreLabel);
scorejLabel.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0)));
scorejLabel.setPreferredSize(new Dimension(40, 20));

ScorejTextField.setEditable(false);
ScorejTextField.setHorizontalAlignment(JTextField.CENTER);
ScorejTextField.setText(scoreValue);
ScorejTextField.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0)));
ScorejTextField.setMaximumSize(new Dimension(60, 25));
ScorejTextField.setMinimumSize(new Dimension(35, 15));
ScorejTextField.setPreferredSize(new Dimension(55, 20));

rankLabel.setHorizontalAlignment(SwingConstants.CENTER);
rankLabel.setText(rankLabelTxt);
rankLabel.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0)));
rankLabel.setPreferredSize(new Dimension(90, 20));

rankTextField.setEditable(false);
rankTextField.setBackground(new Color(255,255,0));
rankTextField.setHorizontalAlignment(JTextField.CENTER);
rankTextField.setText(rankText);
rankTextField.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0)));
rankTextField.setPreferredSize(new Dimension(55, 20));

thePanel.add(scorejLabel);
thePanel.add(ScorejTextField);
thePanel.add(rankLabel);
thePanel.add(rankTextField);

this.add(thePanel);
}

}
Edited by: 799076 on Oct 1, 2010 8:50 AM

Edited by: 799076 on Oct 2, 2010 3:59 AM - added the code tags.

Edited by: 799076 on Oct 2, 2010 4:01 AM                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
This post has been answered by 796119 on Oct 2 2010
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Nov 1 2010
Added on Oct 1 2010
27 comments
4,591 views