How to select JLabel inside a JTable
hi all,
I have a Jtable which has own renderer so it can store components in it. I have added a Jlabel one of its cells but when I select that row the label stays upon the selected background color. here is a sample screenshot to decribe my problem clearly [http://www.imagecross.com/06/image-hosting-view-01.php?id=6570label.jpg]
is there any way to select the label inside selected background color.
- I have already tried to make the label not opaque but it didnt work -
thanks...
I have added bold parts of the code below. if you use other components you can make a type casting and do what you want.
thanks again..
class ComponentRenderer *extends JComponent* implements TableCellRenderer
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
* JLabel l = (JLabel)value;*
* if(isSelected) {*
* l.setForeground(Color.BLUE);*
* l.setOpaque(true);*
* l.setBackground(new Color(184, 207, 229));*
* else {*
* l.setForeground(Color.BLACK);*
* l.setOpaque(true);*
* l.setBackground(Color.WHITE);*
return l;
/*public ComponentRenderer() {
}
Similar Messages
-
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 select a row in JTable for right mouse click ?
Hi All,
I need to select a row on JTable for right mouse click ?
Can any one help me ?
Thanks a lot.
Seelam.Got solution...
tabel.addRowSelectionInterval(..) works.
thanks. -
Hello,
I have a problem selecting a row in a JTable.
I use
mytable.getSelectionModel().setSelectionInterval(row, row);
to select a row, but after that this row is only highlighted. After calling this method I cannot change the selection using the arrow keys.
Can anybody give me a hint, how I can get the row selected, so that I can use the arrow keys immediately after selecting the row?
Any help is welcome.
Thanks,
FritzHello,
I got the solution:
final int pRow = row;
final int pCol = column;
final JTable myTable = mytable;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
myTable.requestFocusInWindow();
myTable.changeSelection(pRow, pCol, true, true); -
How to select first row of JTable by default
Hi,
I have a JTable with 5 rows.
When the software starts, none of the rows are selected.
I wish to keep the first row selected by default.
How do I do it?
I couldnt find any method like setSelectedRow() !!!
Does anyone have a sample code plz?
Thanks.
Anujcouldnt find any method like
setSelectedRow()You need to use getSelectionModel() first.
Another way is to use:
table.changeSelection(0, 0, false, false); -
How do you set the font color for a specific entire row inside a JTable?
How do you set the font color for a specific entire row inside a JTable?
I want to change the font color for only a couple of rows inside a JTable.
I've seen some ways to possibly do this with an individual cell.
Clarification on changing the font color in an individual cell would be helpful too if
there is no easy way to do this for a row.hai,
Try out with this piece of code.Create your table and assign the renderer to each column in the table.
CellColorRenderer m_CellColorRenderer = new CellColorRenderer();
for(int i=0;i<your_JTable.getColumnCount();i++)
your_JTable.getColumnModel().getColumn(i).setCellRenderer(m_CellColorRenderer);
class CellColorRenderer extends JLabel implements TableCellRenderer
CellColorRenderer()
setOpaque(true);
setHorizontalAlignment(LEFT);
setVerticalAlignment(CENTER);
setBackground(Color.white);
setForeground(Color.black);
protected void setValue(Object value)
setText((value == null) ? "" : value.toString());
public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected, boolean hasFocus, int row,int column)
if(isSelected == true)
setForeground(Color.red);
else
setForeground(Color.black);
setValue(value);
return this;
regards,
bala -
How to delete the selected rows in a JTable on pressing a button?
How to delete the selected rows in a JTable on pressing a button?
You are right. I did the same.
Following is the code where some of them might find it useful in future.
jTable1.selectAll();
int[] array = jTable1.getSelectedRows();
for(int i=array.length-1;i>=0;i--)
DefaultTableModel model = (DefaultTableModel)jTable1.getModel();
model.removeRow(i);
} -
How to associate a button with the selection/unselection of a JTable?
hi,
how to associate a button with JTable in this manna? i want to disable a button once there is no selection in the JTable, and enable the button when there is a selection. to associate the selection it is easy: just make an eventAction for the button on the click in the JTable and check whether there is a selection. but how to do this with the unselection? hope anyone can give me any hint. thanx!import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
public class Test extends JFrame {
String[] head = {"One","Two","Three"};
String[][] data = {{"1-1","1-2","1-3"},{"2-1","2-2","2-3"},{"3-1","3-2","3-3"}};
JTable jt = new JTable(data,head);
public Test() {
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
Container content = getContentPane();
content.add(new JScrollPane(jt));
jt.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent lse) {
if (lse.getValueIsAdjusting()) return;
if (jt.getSelectionModel().isSelectionEmpty()) {
System.out.println("Nothing Selected");
} else {
System.out.println("Something Selected");
setSize(500,500);
show();
public static void main( String args[] ) { new Test(); }
} -
How can I create a screen a select option inside a screen
Hello experts,
I have a screen '0100' and i need to create a select-options inside how can i do this? thanks in advance'Well did you search the forum first?
[select-option Dialog programming|
http://wiki.sdn.sap.com/wiki/display/stage/SELECT-OPTIONSonDialogprogrammingscreen]
And you can most definitely find more on SCN. -
How to select more than one row in a JTable swing adf adf?
how to select more than one row in a JTable swing adf adf?
// Allow selection to span one contiguous set of rows, visible columns, or block of cells
table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
// Allow multiple selections of rows, visible columns, or cell blocks
table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); -
How to select a particular row in a JTable?
I want to select a particular row in a JTable. i.e something like
table.setSelectedRow(arg)how can i do it.You can use
table.getSelectionModel().setwhateverIsInTheAPI(...)
depending on your selection mode.Thanx,
but i don't want to change the selectionMode, i
want to select a particular row thro program.
This is like list.setSelected(index) in
JListThe original poster was pointing you in the right direction. You have to use the SelectionModel when you want to work with the selected indexes of a JTable. It will return a ListSelectionModel, which will be an instance of DefaultListSelectionModel unless you implemented your own. Refer to the API for the appropiate method(s).
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/ListSelectionModel.html -
How to make textfield appear inside a jtable ????
hi,
is there any way that i can make mi textfield show up inside a jtable which i have created ??you may have to describe exactly what you are trying to do
in this thread, you want a textfield for additional values entered
http://forum.java.sun.com/thread.jspa?threadID=737376&messageID=4234595#4234595
in this thread, you want the cells uneditable
http://forum.java.sun.com/thread.jspa?threadID=740286&messageID=4246562#4246562
and, by the look of the posted code, you want a textfield separate from the table
here's a simple uneditable table.
if I click on 'fred', what do you want to happen?
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
class Testing extends JFrame
public Testing()
setLocation(400,100);
setDefaultCloseOperation(EXIT_ON_CLOSE);
String colNames[] = {"Name", "Age"};
Object[][] data = {{"joe","21"},{"fred","31"},{"mary","22"}};
DefaultTableModel dtm = new DefaultTableModel(data,colNames);
JTable table = new JTable(dtm){
public boolean isCellEditable(int row,int column){
return false;}};
JScrollPane sp = new JScrollPane(table);
sp.setPreferredSize(new Dimension(300,100));
getContentPane().add(sp);
pack();
public static void main (String[] args){new Testing().setVisible(true);}
} -
How to Select a value from DropDownByIndex -Urgent
Hi All,
I have dropdownbyindex UI elements in my Views, I get values from BAPI. When click records in a table, It goes to another view to display full record. Here i have dropdownbyIndexes So it should select one of appropriate value in dropdownbyindex based on record(Value) in table.
Example:
<u><i><b>In Table View</b></i></u>
id title status priority
10000 webDynPro New Low
<i><u><b>Detail View:</b></u></i>
id 10000
title webDynPro
Status New [New,Old,Open,Closed]---DropDownbyIndex
Priority Low [High,Low,Medium]---DropDownByIndex..4m BAPI
How to select Appropriate Values from DropdownbyIndex. if any one has sample code, that will be helpful.
Note: I am using Model Nodes
Thanks and Regards
Ravi GollaHi Ravi,
In details view, you will have corresponding context node created for Status and priority dropdown fields.
Let suppose, context node for Status is, StatusNode.
value attribute inside this is,
StatusNode
|_ StatusAttrib
Now, you need to write following code to set l_status ="LOW" value in it.
wdContext.nodeStatusNode().moveFirst();
for(int i=0; i<wdContext.nodeStatusNode().size(); i++)
if(wdcontext.currentStatusNodeElement().getStatusAttrib().equals(l_status)
wdContext.nodeStatusNode().setLeadselection(i);
break;
wdContext.nodeStatusNode().moveNext();
write same code for priority also.
Let me know if it is not working with you.
regards,
Bhavik -
To change the font of a selected row in a Jtable
Hello,
Is it possible to change the font of a selected row in a jtable?
i.e. if all the table is set to a bold font, how would you change the font of the row selected to a normal (not bold) font?
thank you.String will be left justified
Integer will be right justified
Date will be a simple date without the time.
As it will with this renderer.Only if your custom renderer duplicates the code
found in each of the above renderers. This is a waste
of time to duplicate code. The idea is to reuse code
not duplicate and debug again.
No, no, no there will be NO duplicated code.
A single renderer class can handle all types ofdata.
Sure you can fit a square peg into a round hole if
you work hard enough. Why does the JDK come with
separate renderers for Date, Integer, Double, Icon,
Boolean? So that, by default the rendering for common classes is done correctly.
Because its a better design then having code
with a bunch of "instanceof" checks and nested
if...else code.This is only required for customization BEYOND what the default renderers provide
>
And you would only have to use instanceof checkswhen you required custom
rendering for a particular classAgreed, but as soon as you do require custom
renderering you need to customize your renderer.
which you would also have to do with theprepareRenderer calls too
Not true. The code is the same whether you treat
every cell as a String or whether you use a custom
renderer for every cell. Here is the code to make the
text of the selected line(s) bold:
public Component prepareRenderer(TableCellRenderer
renderer, int row, int column)
Component c = super.prepareRenderer(renderer, row,
, column);
if (isRowSelected(row))
c.setFont( c.getFont().deriveFont(Font.BOLD) );
return c;
}It will work for any renderer used by the table since
the prepareRenderer(...) method returns a Component.
There is no need to do any kind of "instanceof"
checking. It doesn't matter whether the cell is
renderered with the "Object" renderer or the
"Integer" renderer.
If the user wants to treat all columns as Strings or
treat individual columns as String, Integer, Data...,
then they only need to override the getColumnClass()
method. There is no change to the prepareRenderer()
code.
Have you actually tried the code to see how simple it
is?
I've posted my code. Why don't you post your solution
that will allow the user to bold the text of a Date,
Integer, and String data in separate column and then
let the poster decide.Well, I don't see a compilable, runnable demo anywhere in this thread. So here's one
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Vector;
public class TableRendererDemo extends JFrame{
String[] headers = {"String","Integer","Float","Boolean","Date"};
private JTable table;
public TableRendererDemo() {
buildGUI();
private void buildGUI() {
JPanel mainPanel = (JPanel) getContentPane();
mainPanel.setLayout(new BorderLayout());
Vector headerVector = new Vector(Arrays.asList(headers));
Vector data = createDataVector();
DefaultTableModel tableModel = new DefaultTableModel(data, headerVector){
public Class getColumnClass(int columnIndex) {
return getValueAt(0,columnIndex).getClass();
table = new JTable(tableModel);
// table.setDefaultRenderer(Object.class, new MyTableCellRenderer());
table.setDefaultRenderer(String.class, new MyTableCellRenderer());
table.setDefaultRenderer(Integer.class, new MyTableCellRenderer());
table.setDefaultRenderer(Float.class, new MyTableCellRenderer());
table.setDefaultRenderer(Date.class, new MyTableCellRenderer());
JScrollPane jsp = new JScrollPane(table);
mainPanel.add(jsp, BorderLayout.CENTER);
pack();
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
private Vector createDataVector(){
Vector dataVector = new Vector();
for ( int i = 0 ; i < 10; i++){
Vector rowVector = new Vector();
rowVector.add(new String("String "+i));
rowVector.add(new Integer(i));
rowVector.add(new Float(1.23));
rowVector.add( (i % 2 == 0 ? Boolean.TRUE : Boolean.FALSE));
rowVector.add(new Date());
dataVector.add(rowVector);
return dataVector;
public static void main(String[] args) {
Runnable runnable = new Runnable() {
public void run() {
TableRendererDemo tableRendererDemo = new TableRendererDemo();
tableRendererDemo.setVisible(true);
SwingUtilities.invokeLater(runnable);
class MyTableCellRenderer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if ( isSelected){
setFont(getFont().deriveFont(Font.BOLD));
else{
setFont(getFont().deriveFont(Font.PLAIN));
if ( value instanceof Date){
SimpleDateFormat formatter =(SimpleDateFormat) SimpleDateFormat.getDateInstance(DateFormat.MEDIUM);
setText(formatter.format((Date)value));
if(value instanceof Number){
setText(((Number)value).toString());
return this;
}Hardly a "bunch of instanceof or nested loops. I only used the Date instanceof to allow date format to be specified/ modified. If it was left out the Date column would be "18 Apr 2005" ( DateFormat.MEDIUM, which is default).
Cheers
DB -
The columns of a selected row in a JTable
Hello guys,
I am trying to loop through the columns of a selected row in a JTable. Any ideas how i can do that?
Thanks in advance for your replies.
Antana.there is getValueAt(int row, int column) method in JTable.
will this help you?
and please post swing related queries to swing forum.
--Azodious_
Maybe you are looking for
-
Backup problems with external hard drive
I bought a WD passport external hard drive and copied my itunes library onto a file there. I re-set the location of the library on itunes to the drive on the external hard drive. So far I have not deleted anything from my computer hard drive. However
-
Moving Users from one server to another
Is it possible to move my network users from one Xserve to another? I know this used to be possible to do with NetInfo, but I haven't heard of anything like this using Ldap.
-
Hi All, I am a BW guy. In one of my BW reports I need to count the quantity of order units scheduled. This is what I am doing: Scheduled order = Order for which "Technical completion date" (AUFK-IDAT2) = Blank or 00/00/0000 Order quantity = Total ord
-
How to view spool request under pdf preview
Hello , We have ECC systems which was recently upgraded to ECC 6 ehp7 We see in SP01 tcode , that we have an option to view the spool requests documents in PDF PREVIEW I wanted to know the steps to configure PDF PREVIEW and its requirements, as of no
-
TS2446 what do i do if i forgot my secruity answers for using a device for the first time
i just got the iphone 4s so i logged onto my itunes account. but when i went to purchase an app it said since it was the first time on itunes on this device i had to answer to secruity questions. but i didnt remember the answer so i kept guessing and