Grouping rows in jtable
Does anyone know of any examples anywhere of a way to group rows and create subtotal rows as well as total rows. In the table, I want to create a different look for the subtotal rows, possibly even with a different layout than the other rows.
For instance, My db has a list or orders for securities. I want to display in the table a row in the table for each row in the db with columns Security, quantity, and security description.
Then I want to break on security and show the total quantity for that security AND the total dividend. I also would like a group header that will display the security, so I dont have to display it on every line.
This seems like pretty basic application logic, but I cant find any examples anywhere of grouping and summing with subtotal and total headers and footers for JTable.
There is no built-in support for doing what you want. But keep in mind that the model is the heart of the JTable - do your grouping there and then notify the table when things changed. So you need a custom model that either shows or hides the subtotals (and the subheaders/footers as well). One approach would be to have a tableModel for each group and a master tableModel that' a combination of all the group table. Then let the master tableModel be the listener to the group tables (similar to the TableMap that comes with the jfc examples) update itself on showing/hiding the subtotals - and any other changes in the group table as well - and make it the model of the JTable.
Greetings
Jeanette
Similar Messages
-
How to hide itemRenderers in the Grouped rows of an AdvancedDataGrid?
I am using an AdvancedDataGrid and showing a comboBox as the itemRenderer and also the editRenderer. However I am seeing the combobox in the grouped rows also. Below is the code I am using and also attached the screenshot of the app. Please help.
TestAdvGridGrpRen.mxml
===================
<?xml version="1.0"?>
<!-- dpcontrols/adg/SummaryGroupADGCustomSummary.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
import mx.collections.IViewCursor;
import mx.collections.SummaryObject;
[Bindable]
private var dpFlat:ArrayCollection = new ArrayCollection([
{Region:"Southwest", Territory:"Arizona",
Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},
{Region:"Southwest", Territory:"Arizona",
Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000},
{Region:"Southwest", Territory:"Central California",
Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000},
{Region:"Southwest", Territory:"Nevada",
Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000},
{Region:"Southwest", Territory:"Northern California",
Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},
{Region:"Southwest", Territory:"Northern California",
Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000},
{Region:"Southwest", Territory:"Southern California",
Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},
{Region:"Southwest", Territory:"Southern California",
Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000}
// Callback function to create
// the SummaryObject used to hold the summary data.
private function summObjFunc():SummaryObject {
// Define the object containing the summary data.
var obj:SummaryObject = new SummaryObject();
// Add a field containing a value for the Territory_Rep column.
obj.Territory_Rep = "Alternating Reps";
return obj;
// Callback function to summarizes
// every other row of the Actual sales revenue for the territory.
private function summFunc(cursor:IViewCursor, dataField:String,
operation:String):Number {
var oddCount:Number = 0;
var count:int = 1;
while (!cursor.afterLast)
if (count % 2 != 0)
oddCount += cursor.current["Actual"];
cursor.moveNext();
count++;
return oddCount;
]]>
</mx:Script>
<mx:AdvancedDataGrid id="myADG"
width="100%" height="100%"
initialize="gc.refresh();">
<mx:dataProvider>
<mx:GroupingCollection id="gc" source="{dpFlat}">
<mx:Grouping>
<mx:GroupingField name="Region"/>
<mx:GroupingField name="Territory">
<mx:summaries>
<mx:SummaryRow summaryObjectFunction="summObjFunc"
summaryPlacement="first">
<mx:fields>
<mx:SummaryField dataField="Actual" summaryFunction="summFunc"/>
</mx:fields>
</mx:SummaryRow>
</mx:summaries>
</mx:GroupingField>
</mx:Grouping>
</mx:GroupingCollection>
</mx:dataProvider>
<mx:columns>
<mx:AdvancedDataGridColumn dataField="Region"/>
<mx:AdvancedDataGridColumn dataField="Territory_Rep"
headerText="Territory Rep"/>
<mx:AdvancedDataGridColumn headerText="Actual" dataField="Actual"
rendererIsEditor="true"
itemRenderer="TestStatusTypeEditor"
editorDataField="type"/>
<mx:AdvancedDataGridColumn dataField="Estimate"/>
</mx:columns>
</mx:AdvancedDataGrid>
</mx:Application>
TestStatusTypeEditor.mxml
====================
<?xml version="1.0" encoding="utf-8"?>
<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="OnInit()" >
<!-- This is the content of the ComboBox.
<mx:dataProvider>
<mx:Object label="Cog" />
<mx:Object label="Sproket" />
</mx:dataProvider>
-->
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var cards:ArrayCollection = new ArrayCollection(
[ {label:"38865", data:1},
{label:"29885", data:2},
{label:"29134", data:3},
{label:"52888", data:4},
{label:"38805", data:5},
{label:"55498", data:6},
{label:"44985", data:7},
{label:"44913", data:8}]);
private function OnInit():void
dataProvider = cards;
* This override of set data compares the data.label against the label property
* of each item in the dataProvider (above). This code is written a bit more
* generically than necessary, but it would allow you to have a long list
* in the dataProvider and not have to change this code.
override public function set data(value:Object):void
super.data = value;
var list:ArrayCollection = dataProvider as ArrayCollection;
for(var i:int=0; i < list.length; i++)
if( String(value.statusName) == list[i].label ) {
selectedIndex = i;
* This getter is the one identified as the editorDataField in the list for
* the itemEditor.
public function get type() : String
if( selectedItem ) {
return selectedItem.label;
else {
return null;
]]>
</mx:Script>
</mx:ComboBox>Solved this issue by using mx:rendererProviders element for my AdvancedGrid. Using the depth parameter gives me the ability to hide the itemRenderer for the Grouped rows.
<mx:AdvancedDataGrid id="myADG"
width="100%" height="100%"
initialize="gc.refresh();">
<mx:dataProvider>
<mx:GroupingCollection id="gc" source="{dpFlat}">
<mx:Grouping>
<mx:GroupingField name="Region"/>
<mx:GroupingField name="Territory">
<mx:summaries>
<mx:SummaryRow summaryObjectFunction="summObjFunc"
summaryPlacement="first">
<mx:fields>
<mx:SummaryField dataField="Actual" summaryFunction="summFunc"/>
</mx:fields>
</mx:SummaryRow>
</mx:summaries>
</mx:GroupingField>
</mx:Grouping>
</mx:GroupingCollection>
</mx:dataProvider>
<mx:columns>
<mx:AdvancedDataGridColumn dataField="Region"/>
<mx:AdvancedDataGridColumn dataField="Territory_Rep"
headerText="Territory Rep"/>
<mx:AdvancedDataGridColumn headerText="Actual" dataField="Actual"
rendererIsEditor="true"
editorDataField="type"/>
<mx:AdvancedDataGridColumn dataField="Estimate"/>
</mx:columns>
<mx:rendererProviders>
<mx:AdvancedDataGridRendererProvider
columnIndex="2"
columnSpan="1"
depth="3"
renderer="TestStatusTypeEditor"/>
</mx:rendererProviders>
</mx:AdvancedDataGrid> -
How to set background color of row in JTable
Hi,I want to set different background color to rows in JTable according to some value in the this row.
eg.
no name isGood
1 aaa yes (this row's background color is red)
2 bbb no (this row's background color is blue)
3 ccc yes (this row's background color is red)
4 ddd yes (this row's background color is red)
5 eee no (this row's background color is blue)
thanksthanks!*_*
-
How to set background color in row of JTable ?
i am new in java please tell me about How to set background color in row of JTable ? please example code. Thnak you.
Here is an example: http://www.javaworld.com/javaworld/javaqa/2001-09/03-qa-0928-jtable.html
For more info on how to use tables read the swing tutorial: http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
ICE -
How to hide row in JTable?
Hi all,
How to hide some specific rows in JTable for user view filtering purpose?
ThanksTry to use the Table Model.
The "getValueAt" Methode decide what to Display.
So a simple "if" command can hide the complete row - or a single Statement.
public Object getValueAt(int row, int col) {
ArrayList al = new ArrayList();
StueliTeil tabellenzeile = (StueliTeil) getDaten().get(row);
switch (col) {
case 0 :
return tabellenzeile.getUmfang();
case 1 :
return tabellenzeile.getTakt();
... -
Inserting row in JTable (runtime)
i need to inserting row in JTable in runtime so tell me what it do
dear farhanaj ,
try this code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.*;
/* <applet code=tableadd.class width=200 height=200>
</applet>
public class tableadd extends JApplet implements ActionListener
Object[] data = new Object[5];
DefaultTableModel defaulttablemodel = new DefaultTableModel();
JTable jtable=new JTable(defaulttablemodel);
JPanel jpanel= new JPanel();
private JPanel topPanel,jpPanel;
public JTable table;
JButton jbutton1 = new JButton("create new row");
JButton jbutton2 = new JButton("create new col");
//JButton jbutton1=new Jbutton("r"),jbutton2=new Jbutton("c");
public tableadd()
for(int column=0 ; column<5 ; column++)
defaulttablemodel.addColumn("column" + column);
for(int row=0 ; row<5;row++)
for(int column=0 ;column<5;column++)
data[column]="cell" row "," + column;
defaulttablemodel.addRow(data);
//getContentPane().add(new JScrollPane(jtable) ,BorderLayout.CENTER);
//getContentPane().add(new JPanel() ,BorderLayout.SOUTH);
int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
JScrollPane jsp = new JScrollPane(jtable , v, h);
getContentPane().add(jsp, BorderLayout.CENTER);
topPanel = new JPanel();
jpPanel=new JPanel();
topPanel.setLayout( new BorderLayout() );
getContentPane().add(topPanel,BorderLayout.NORTH);
getContentPane().add(jpPanel,BorderLayout.SOUTH);
jpPanel.add(jbutton1);
jpPanel.add(jbutton2);
jbutton1.addActionListener(this);
jbutton2.addActionListener(this);
public void actionPerformed(ActionEvent e)
if (e.getSource() == jbutton1)
int numberrows = defaulttablemodel.getRowCount();
int numbercolumns=defaulttablemodel.getColumnCount();
Object[] data = new Object[numbercolumns];
for(int column=0 ; column<numbercolumns;column++)
data[column]="cell" numberrows "," +column;
defaulttablemodel.addRow(data);
else
if (e.getSource() ==jbutton2)
int numberrows=defaulttablemodel.getRowCount();
int numbercolumns=defaulttablemodel.getColumnCount();
defaulttablemodel.addColumn("column" + numbercolumns);
for(int row=0; row<numberrows ; row++)
defaulttablemodel.setValueAt("cell" row "," +numbercolumns ,row , numbercolumns);
System.out.println(row);
//jtable.sizeColumnsToFit(0); -
How to set different font for a particular row in jtables?
How to set different font size and font type for a particular row in jtable?
More than enough sample code here:
[http://java.sun.com/docs/books/tutorial/uiswing/components/table.html]
db -
How to select a row in Jtable at runtime
how to select a row in Jtable at runtime.
use
setRowSelectionInterval(int fromRowIndex, int toRowIndex);example if your table has 10 rows then u want to select the rows from 4 to 8 then use
setRowSelectionInterval(3, 7);if you want to select just one row for example 5 then use
setRowSelectionInterval(5, 5); -
How to remove a row from JTable
Hi!
I'm used to remove rows from JTables getting the model and doing a removeRow(num) like this:
((DefaultTableModel)jTable1.getModel()).removeRow(0);
But with ADF and JDeveloper the model says it's a JUTableBinding.JUTableModel but its not accessible.
How to remove a row in Jdeveloper 10.1.3.4.0?Or maybe is just better to refresh data in the jTable but I do not know either like doing it.
-
How to apply different colors to specific rows in JTable
hi,
Anybody could tell me the way of colorising the rows in jtable.. I want to apply different colors to diff rows..
If i get a piece of code that could help me a lot..
thanks in advance,
Sapnayou'll find the answer at http://www2.gol.com/users/tame/swing/examples/SwingExamples.html
-
SSRS Report - Group Totals are Zero when Group Row Hidden
I have a report with one group called Counties. This group has a filter.
I added code to produce the totals for Prior, Current and DistinctCount:
Public Shared Dim grandTotal1 as Decimal = 0
Public Shared Dim CountyTotal1 as Decimal = 0
Public Function AddTotal1(ByVal b AS Decimal) AS Decimal
grandTotal1 = grandTotal1 + b
CountyTotal1 = CountyTotal1 + b
return b
End Function
Public Function GetCountyTotal1()
Dim ret as Decimal = CountyTotal1
CountyTotal1 = 0
return ret
End Function
Public Function GetGrandTotal1()
Dim ret as Decimal = grandTotal1
grandTotal1= 0
return ret
End Function
Public Shared Dim grandTotal2 as Decimal = 0
Public Shared Dim CountyTotal2 as Decimal = 0
Public Function AddTotal2(ByVal b AS Decimal) AS Decimal
grandTotal2 = grandTotal2 + b
CountyTotal2 = CountyTotal2 + b
return b
End Function
Public Function GetCountyTotal2()
Dim ret as Decimal = CountyTotal2
CountyTotal2 = 0
return ret
End Function
Public Function GetGrandTotal2()
Dim ret as Decimal = grandTotal2
grandTotal2= 0
return ret
End Function
Public Shared Dim grandTotal3 as Decimal = 0
Public Shared Dim CountyTotal3 as Decimal = 0
Public Function AddTotal3(ByVal b AS Decimal) AS Decimal
grandTotal3 = grandTotal3 + b
CountyTotal3 = CountyTotal3 + b
return b
End Function
Public Function GetCountyTotal3()
Dim ret as Decimal = CountyTotal3
CountyTotal3 = 0
return ret
End Function
When it runs, it gives me this:
This works fine. But now I need to hide the details on the counties. I just need the line with the 15, 32 and the 9.
I highlighted the group row, right clicked -> Row Visibility and changed it to Hide. But when I do this, my results are three zeros.
I am at a loss now on how to just show the totals. Does anyone have any suggestions for me to try?
cpemtp1Hi cpemtp1,
Per my understanding that you just want to get the total display in the report and hidden the details, right?
I have tested on my local environment and suggest you to create an new dataset and using the query below to get the Total of every country and then you can using the SUM() function to sum the total of all the country which meet the conditions.
Detail information below for your reference:
Create an new dataset and using the query below to get the sum of every country meet the filter condition:
Select a.PRIORYEAR,a.CUREENTYEAR ,a.Country from (select SUM(PRIORYEAR) as P1,SUM(CUREENTYEAR) as C1,Country
from TableName
group by Country) a
where a.P1<=a.C1
Create an new tablix under the button of the existing Tablix or you can just remove the old tablix as below
Original Table:
New designed total:
If you still have nay problem, please feel free to ask.
Regards
Vicky Liu
Vicky Liu
TechNet Community Support -
Hello I am new To JAVA SWING
I have 2 questions related to JTable
1) How do i remove selected row in JTable ...for instance, I click on the row to delete (It is selected) , later I press the delete button, and then row is removed .... any hints ?
2) If I would like to save the rows in a JTable into a database , .... How can iterate through the rows in the JTable..each row .... the rows are saved in a List object...and a List Object is what I pass as a parameter in a class method in order to be saved into Database.
Thanks,
deibys1) use the removeRow(...) method of the DefaultTableModel
20 use table.getModel().getValueAt(...) to get the data from the model and create your list Object. -
Problem in adding/deleting rows in JTable
I am trying to add /remove rows from JTable whose first column is JButton and others are JComboBox's.If no rows are selected,new row is added at the end.If user selects some row & then presses insert button,new row is added below it.Rows can only be deleted if user has made some selection.Kindly help me,where i am making mistake.If any function is to be used.My code is as follows....
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.border.*;
public class JButtonTableExample extends JFrame implements ActionListener{
JComboBox mComboLHSType = new JComboBox();
JComboBox mComboRHSType = new JComboBox();
JLabel mLabelLHSType = new JLabel("LHS Type");
JLabel mLabelRHSType = new JLabel("RHS Type");
JButton mButtonDelete = new JButton("Delete");
JButton mButtonInsert = new JButton("Insert");
JPanel mPanelButton = new JPanel();
JPanel mPanelScroll = new JPanel();
JPanel mPanelCombo = new JPanel();
DefaultTableModel dm ;
JTable table;
int currentRow = -1;
static int mSelectedRow = -1;
public JButtonTableExample()
super( "JButtonTable Example" );
makeForm();
setSize( 410, 222 );
setVisible(true);
private void makeForm()
this.getContentPane().setLayout(null);
mPanelCombo.setLayout(null);
mPanelCombo.setBorder(new LineBorder(Color.red));
mPanelCombo.setBounds(new Rectangle(1,1,400,30));
mLabelLHSType.setBounds(new Rectangle(26,5,71,22));
mComboLHSType.setBounds(new Rectangle(83,5,100,22));
mLabelRHSType.setBounds(new Rectangle(232,5,71,22));
mComboRHSType.setBounds(new Rectangle(292,5,100,22));
mPanelCombo.add(mLabelLHSType,null);
mPanelCombo.add(mComboLHSType,null);
mPanelCombo.add(mLabelRHSType,null);
mPanelCombo.add(mComboRHSType,null);
mPanelScroll.setLayout(null);
mPanelScroll.setBorder(new LineBorder(Color.blue));
mPanelScroll.setBounds(new Rectangle(1,28,400,135));
mPanelButton.setLayout(null);
mPanelButton.setBorder(new LineBorder(Color.green));
mPanelButton.setBounds(new Rectangle(1,165,400,30));
mButtonInsert.setBounds(new Rectangle(120,5,71,22));
mButtonDelete.setBounds(new Rectangle(202,5,71,22));
mButtonDelete.addActionListener(this);
mButtonInsert.addActionListener(this);
mPanelButton.add(mButtonDelete,null);
mPanelButton.add(mButtonInsert,null);
dm = new DefaultTableModel();
//dm.setDataVector(null,
//new Object[]{"Button","Join","LHS","Operator","RHS"});
dm.setDataVector(new Object[][]{{"","","","",""}},
new Object[]{"","Join","LHS","Operator","RHS"});
table = new JTable(dm);
table.getTableHeader().setReorderingAllowed(false);
table.setRowHeight(25);
int columnWidth[] = {20,45,95,95,95};
TableColumnModel modelCol = table.getColumnModel();
for (int i=0;i<5;i++)
modelCol.getColumn(i).setPreferredWidth(columnWidth);
//modelCol.getColumn(0).setCellRenderer(new ButtonRenderer());
//modelCol.getColumn(0).setCellEditor(new ButtonEditor(new JCheckBox()));
modelCol.getColumn(0).setCellRenderer(new ButtonCR());
modelCol.getColumn(0).setCellEditor(new ButtonCE(new JCheckBox()));
modelCol.getColumn(0).setResizable(false);
setUpJoinColumn(modelCol.getColumn(1));
setUpLHSColumn(modelCol.getColumn(2));
setUpOperColumn(modelCol.getColumn(3));
setUpRHSColumn(modelCol.getColumn(4));
JScrollPane scroll = new JScrollPane(table);
scroll.setBounds(new Rectangle(1,1,400,133));
mPanelScroll.add(scroll,null);
this.getContentPane().add(mPanelCombo,null);
this.getContentPane().add(mPanelScroll,null);
this.getContentPane().add(mPanelButton,null);
}//end of makeForm()
public void actionPerformed(ActionEvent ae)
if (ae.getSource() == mButtonInsert)
//int currentRow = table.getSelectedRow();
currentRow = ButtonCE.selectedRow;
System.out.println("Before Insert CURRENT ROW"+currentRow);
if(currentRow == -1)
int rowCount = dm.getRowCount();
//mSelectedRow = rowCount-1;
//table.clearSelection();
dm.insertRow(rowCount,new Object[]{"","","","",""});
currentRow = -1;
ButtonCE.selectedRow = -1;
else
table.clearSelection();
dm.insertRow(currentRow+1,new Object[]{"","","","",""});
currentRow = -1;
ButtonCE.selectedRow = -1;
//System.out.println("After INSERT CURRENT ROW"+currentRow);
if(ae.getSource() == mButtonDelete)
//int currentRow = table.getSelectedRow();
currentRow = ButtonCE.selectedRow;
System.out.println("Before DELETE CURRENT ROW"+currentRow);
if(currentRow != -1)
dm.removeRow(currentRow);
table.clearSelection();
currentRow = -1;
ButtonCE.selectedRow = -1;
//System.out.println("Selected Row"+mSelectedRow);
else
JOptionPane.showMessageDialog(null, "Select row first", "alert", JOptionPane.ERROR_MESSAGE);
//System.out.println("DELETE CURRENT ROW"+currentRow);
public void setUpJoinColumn(TableColumn joinColumn)
//Set up the editor for the sport cells.
JComboBox comboBox = new JComboBox();
comboBox.addItem("AND");
comboBox.addItem("OR");
comboBox.addItem("NOT");
joinColumn.setCellEditor(new DefaultCellEditor(comboBox));
//Set up tool tips for the sport cells.
DefaultTableCellRenderer renderer =
new DefaultTableCellRenderer();
renderer.setToolTipText("Click for combo box");
joinColumn.setCellRenderer(renderer);
//Set up tool tip for the sport column header.
TableCellRenderer headerRenderer = joinColumn.getHeaderRenderer();
if (headerRenderer instanceof DefaultTableCellRenderer) {
((DefaultTableCellRenderer)headerRenderer).setToolTipText(
"Click the sport to see a list of choices");
public void setUpLHSColumn(TableColumn LHSColumn)
//Set up the editor for the sport cells.
JComboBox comboBox = new JComboBox();
comboBox.addItem("Participant1");
comboBox.addItem("Participant2");
comboBox.addItem("Variable1");
LHSColumn.setCellEditor(new DefaultCellEditor(comboBox));
//Set up tool tips for the sport cells.
DefaultTableCellRenderer renderer =
new DefaultTableCellRenderer();
renderer.setToolTipText("Click for combo box");
LHSColumn.setCellRenderer(renderer);
//Set up tool tip for the sport column header.
TableCellRenderer headerRenderer = LHSColumn.getHeaderRenderer();
if (headerRenderer instanceof DefaultTableCellRenderer) {
((DefaultTableCellRenderer)headerRenderer).setToolTipText(
"Click the sport to see a list of choices");
public void setUpOperColumn(TableColumn operColumn)
//Set up the editor for the sport cells.
JComboBox comboBox = new JComboBox();
comboBox.addItem("=");
comboBox.addItem("!=");
comboBox.addItem("Contains");
operColumn.setCellEditor(new DefaultCellEditor(comboBox));
//Set up tool tips for the sport cells.
DefaultTableCellRenderer renderer =
new DefaultTableCellRenderer();
renderer.setToolTipText("Click for combo box");
operColumn.setCellRenderer(renderer);
//Set up tool tip for the sport column header.
TableCellRenderer headerRenderer = operColumn.getHeaderRenderer();
if (headerRenderer instanceof DefaultTableCellRenderer) {
((DefaultTableCellRenderer)headerRenderer).setToolTipText(
"Click the sport to see a list of choices");
public void setUpRHSColumn(TableColumn rhsColumn)
//Set up the editor for the sport cells.
JComboBox comboBox = new JComboBox();
comboBox.addItem("Variable1");
comboBox.addItem("Constant1");
comboBox.addItem("Constant2");
rhsColumn.setCellEditor(new DefaultCellEditor(comboBox));
//Set up tool tips for the sport cells.
DefaultTableCellRenderer renderer =
new DefaultTableCellRenderer();
renderer.setToolTipText("Click for combo box");
rhsColumn.setCellRenderer(renderer);
//Set up tool tip for the sport column header.
TableCellRenderer headerRenderer = rhsColumn.getHeaderRenderer();
if (headerRenderer instanceof DefaultTableCellRenderer) {
((DefaultTableCellRenderer)headerRenderer).setToolTipText(
"Click the sport to see a list of choices");
public static void main(String[] args) {
JButtonTableExample frame = new JButtonTableExample();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
//Button as a renderer for the table cells
class ButtonCR implements TableCellRenderer
JButton btnSelect;
public ButtonCR()
btnSelect = new JButton();
btnSelect.setMargin(new Insets(0,0,0,0));
public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column)
if (column != 0) return null; //meany !!!
//System.out.println("Inside renderer########################Selected row");
//btnSelect.setText(value.toString());
//btnSelect.setIcon(new ImageIcon("capsigma.gif"));
return btnSelect;
}//end fo ButtonCR
//Default Editor for table
class ButtonCE extends DefaultCellEditor implements ActionListener
JButton btnSelect;
JTable table;
//Object val;
static int selectedRow = -1;
public ButtonCE(JCheckBox whoCares)
super(whoCares);
//this.row = row;
btnSelect = new JButton();
btnSelect.setMargin(new Insets(0,0,0,0));
btnSelect.addActionListener(this);
setClickCountToStart(1);
public Component getTableCellEditorComponent(JTable table,Object value,boolean isSelected,int row,int column)
if (column != 0) return null; //meany !!!
this.selectedRow = row;
this.table = table;
table.clearSelection();
System.out.println("Inside getTableCellEditorComponent");
return btnSelect;
//public Object getCellEditorValue()
//return val;
public void actionPerformed(ActionEvent e)
// Your Code Here...
System.out.println("Inside actionPerformed");
System.out.println("Action performed Row selected "+selectedRow);
btnSelect.setIcon(new ImageIcon("capsigma.gif"));
}//end of ButtonCEHi,
All the thing you have to do is to return a boolean for the column. JTable will use a checkbox (as default) to show boolean values. -
Please I need help
How can I hide a row in Jtable.
For example if you push a button hide first row.
ThanksOne simple way you can do is:
just remove this row but keep it somewhere so that you may add it back when you want later. :-) -
Dear friends,
When i select a whole row in JTable it gets selected but the background color of the row selected does not change. i.e. Its not highlighted as in MS-Excel.
How can i overcome this problem?
Kindly reply
Thanks.Hi,
Thanx for ur inputs. This is what the code i wrote. When u run this code,
If we select row1 column1 the cells highlighted will be on row 2, 3 and 4. If we select row1 column 2 the selected cells will be on row 1, 3 and 4. I want the row to be selected fully when we select coumn 1 only.
For eg. if i select row 200 from column 1 the 200 th row should only be fully highlighted
Anyway i'll try the above code and check
Here is the code
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class table1 extends JFrame
// Variables declaration
private JTable jTable1;
private JScrollPane jScrollPane1;
private JPanel contentPane;
// End of variables declaration
public table1()
super();
this.setVisible(true);
private void initializeComponent()
jTable1 = new JTable();
jScrollPane1 = new JScrollPane();
contentPane = (JPanel)this.getContentPane();
jTable1.setModel(new DefaultTableModel(4, 4));
jScrollPane1.setViewportView(jTable1);
contentPane.setLayout(null);
addComponent(contentPane, jScrollPane1, 58,65,301,207);
this.setTitle("table1 - extends JFrame");
this.setLocation(new Point(0, 0));
this.setSize(new Dimension(473, 539));
private void addComponent(Container container,Component c,int x,int
y,int width,int height)
c.setBounds(x,y,width,height);
container.add(c);
} Thanks again
Maybe you are looking for
-
Business Area is not pulling for Balance Sheet Accounts
Hi, For few Balance Sheet GL Accounts (From MM side), Business area is not pulling while doing MM Cycle. For other Balance Sheet GL Accounts (From MM side), system is pulling the Business area by default. I have checked all the Field Status Group con
-
Not able to compile wrapped package bodies.
Hi All Can anybody pls help me finding me the reason why I m not able to compile .plb (wrapped package body). There are no compilation errors. But when I run the .plb file (as @xyz.plb), sqlplus window hangs. No error shown. Everytime I had to close
-
I bought an iphone 4s in canada factory unlocked and my gsm sim not activating my iphone 4s
my factory unlocked iphone wont activate with my gsm sim card can anyone help ?
-
i have been trying to download the same song for 2 days and it keeps getting stuck in the same place. i have purchased other songs after this one and they can't get downloaded b/c of this one. help!
-
Adobe Muse: images in slideshow lose contrast/dull
I'm hoping there's an easy workaround or solution for this. When I put my images in a slideshow and view in Preview mode or publish and view in my browser, the images look flat, with dull blacks and desaturated colors. The images look fine in design