JTable Problem(Urgent)

I want to add two components in a Column in JTable (a combobox and radio button in a single column and different rows of the column) How will I do it is it possible to have this in two different CellEditor and Renderers or something else has to be done. Please give the code.

There are several good examples of table rendering and editing out there. Here are two:
http://www-106.ibm.com/developerworks/java/library/j-jtable/
http://www.javapractices.com/Topic168.cjp
Niether addresses different renderers / editors on a cell by cell basis but I know I have seen an example somewhere. But you should be able to get there from the above examples and using your own JTable implementing:
public TableCellEditor getCellEditor(int row, int column)
and
public TableCellRenderer getCellRenderer(int row, int column)
IL

Similar Messages

  • J2EE StartUp Problem, URGENT.

    Hi all!
    I'm having a problem since friday with the J2EE Engine Startup. The problem is that MMC says me that the server is running but i can access to the server by anyway. The developer trace of the jcontrol process is:
    [Thr 2968] Tue Aug 09 13:59:50 2005
    [Thr 2968] JControlICheckProcessList: process server0 started (PID:1544)
    JStartupStartJLaunch: program = C:\usr\sap\J2E\JC00/j2ee/os_libs/jlaunch.exe
    -> arg[00] = C:\usr\sap\J2E\JC00/j2ee/os_libs/jlaunch.exe
    -> arg[01] = pf=C:\usr\sap\J2E\SYS\profile\J2E_JC00_toshiba-user
    -> arg[02] = -DSAPINFO=J2E_00_sdm
    -> arg[03] = -file=C:\usr\sap\J2E\JC00\SDM\program\config\sdm_jstartup.properties
    -> arg[04] = -nodeName=sdm
    -> arg[05] = -nodeId=2
    -> arg[06] = -syncSem=JSTARTUP_WAIT_ON_2964
    -> arg[07] = -jvmOutFile=C:\usr\sap\J2E\JC00\work\jvm_sdm.out
    -> arg[08] = -stdOutFile=C:\usr\sap\J2E\JC00\work\std_sdm.out
    -> arg[09] = -locOutFile=C:\usr\sap\J2E\JC00\work\dev_sdm
    -> arg[10] = -mode=JCONTROL
    -> arg[11] = pf=C:\usr\sap\J2E\SYS\profile\J2E_JC00_toshiba-user
    -> lib path = PATH=C:\j2sdk1.4.2_08\jre\bin\server;C:\j2sdk1.4.2_08\jre\bin;C:\oracle\WAS\92\bin;C:\oracle\WAS\92\jre\1.4.2\bin\client;C:\oracle\WAS\92\jre\1.4.2\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\j2sdk1.4.2_08\bin;C:\oracle\WAS\92\Appache\perl\5.00503\bin\MSWin32-x86;C:\usr\sap\J2E\SCS01\exe;C:\usr\sap\J2E\JC00\exe;C:\usr\sap\J2E\SYS\exe\run
    -> exe path = PATH=C:\j2sdk1.4.2_08\bin;C:\usr\sap\J2E\JC00\j2ee\os_libs;C:\oracle\WAS\92\bin;C:\oracle\WAS\92\jre\1.4.2\bin\client;C:\oracle\WAS\92\jre\1.4.2\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\j2sdk1.4.2_08\bin;C:\oracle\WAS\92\Appache\perl\5.00503\bin\MSWin32-x86;C:\usr\sap\J2E\SCS01\exe;C:\usr\sap\J2E\JC00\exe;C:\usr\sap\J2E\SYS\exe\run
    [Thr 2968] Tue Aug 09 13:59:51 2005
    [Thr 2968] JControlICheckProcessList: process SDM started (PID:1556)
    [Thr 1188] Tue Aug 09 14:01:01 2005
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] Tue Aug 09 14:01:58 2005
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] JControlMSMessageFunc: receive command:6, argument:1213679940 from Message Server
    [Thr 1188] Tue Aug 09 14:10:25 2005
    [Thr 1188] JControlMSReadMessage: NiPeek() returns -5 NIETIMEOUT
    [Thr 1188] Tue Aug 09 14:15:45 2005
    [Thr 1188] JControlMSReadMessage: NiPeek() returns -5 NIETIMEOUT
    [Thr 1188] Tue Aug 09 14:20:46 2005
    [Thr 1188] JControlMSReadMessage: NiPeek() returns -5 NIETIMEOUT
    [Thr 1188] Tue Aug 09 14:26:06 2005
    [Thr 1188] JControlMSReadMessage: NiPeek() returns -5 NIETIMEOUT
    [Thr 1188] Tue Aug 09 14:31:07 2005
    [Thr 1188] JControlMSReadMessage: NiPeek() returns -5 NIETIMEOUT
    [Thr 1188] Tue Aug 09 14:36:27 2005
    [Thr 1188] JControlMSReadMessage: NiPeek() returns -5 NIETIMEOUT
    [Thr 1188] Tue Aug 09 14:41:28 2005
    [Thr 1188] JControlMSReadMessage: NiPeek() returns -5 NIETIMEOUT
    Then i try to login the visual admin gives me a windows error and the msg_server process shuts down alone. Then i restart that node and agregate the following lines to the trace:
    Thr 1188] Tue Aug 09 14:42:25 2005
    [Thr 1188] *** ERROR => MsINiRead: NiBufReceive failed (NIECONN_BROKEN) [msxxi.c      2488]
    [Thr 1188] *** ERROR => MsIReadFromHdl: NiRead (rc=NIECONN_BROKEN) [msxxi.c      1652]
    [Thr 1188] Tue Aug 09 14:42:27 2005
    [Thr 1188] ***LOG Q0I=> NiPConnect2: SiPeekPendConn (10061: WSAECONNREFUSED: Connection refused) [nixxi_r.cpp 8588]
    [Thr 1188] *** ERROR => MsIAttachEx: NiBufConnect to toshiba-user/3601 failed (rc=NIECONN_REFUSED) [msxxi.c      633]
    [Thr 1188] *** WARNING => Can't reconnect to message server (toshiba-user/3601) [rc = -100]-> reconnect [jcntrms.c    295]
    [Thr 1188] Tue Aug 09 14:42:32 2005
    [Thr 1188] *** ERROR => MsIAttachEx: NiBufConnect to toshiba-user/3601 failed (rc=NIECONN_REFUSED) [msxxi.c      633]
    [Thr 1188] *** WARNING => Can't reconnect to message server (toshiba-user/3601) [rc = -100]-> reconnect [jcntrms.c    295]
    [Thr 1188] Tue Aug 09 14:42:38 2005
    [Thr 1188] *** ERROR => MsIAttachEx: NiBufConnect to toshiba-user/3601 failed (rc=NIECONN_REFUSED) [msxxi.c      633]
    [Thr 1188] *** WARNING => Can't reconnect to message server (toshiba-user/3601) [rc = -100]-> reconnect [jcntrms.c    295]
    [Thr 1188] Tue Aug 09 14:42:44 2005
    [Thr 1188] *** ERROR => MsIAttachEx: NiBufConnect to toshiba-user/3601 failed (rc=NIECONN_REFUSED) [msxxi.c      633]
    [Thr 1188] *** WARNING => Can't reconnect to message server (toshiba-user/3601) [rc = -100]-> reconnect [jcntrms.c    295]
    [Thr 1188] Tue Aug 09 14:42:49 2005
    [Thr 1188] JControlMSConnect: reconnected to message server (toshiba-user/3601)
    [Thr 1188] Tue Aug 09 14:48:11 2005
    [Thr 1188] JControlMSReadMessage: NiPeek() returns -5 NIETIMEOUT
    [Thr 1188] Tue Aug 09 14:53:12 2005
    [Thr 1188] JControlMSReadMessage: NiPeek() returns -5 NIETIMEOUT
    [Thr 1188] Tue Aug 09 14:58:32 2005
    [Thr 1188] JControlMSReadMessage: NiPeek() returns -5 NIETIMEOUT
    I try to login the visual admin again and gives me the following error: "Cannot open connection on host: 191.9.6.22 and port: 50004"
    Looking the log and trace files i see the following errors:
    - SAPEngine_System_Thread[impl:5]_5##0#0#Error#1#/System/Server#Plain###Encomi: failed to connect to toshiba-user/3201(Connection refused: connect)#
    - java.net.SocketException: socket closed
         at java.net.PlainSocketImpl.socketAccept(Native Method)
         at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:353)
         at java.net.ServerSocket.implAccept(ServerSocket.java:448)
         at java.net.ServerSocket.accept(ServerSocket.java:419)
         at com.sap.engine.core.port.impl0.ServerSocketListener.run(ServerSocketListener.java:87)
    - erver socket listener opened by service on socket encountered error. The listener will be stopped.#2#p4#ServerSocket[addr=/0.0.0.0,port=0,localport=50004]
    I dont know whats happening, if somebody knows i hope that helps me. Please is urgent.
    Thx and Rgds.
    Gregory

    Hi, thx a lot both.
    Respect the link
    http://<hostname>:50<instanceno>00/sap/monitoring/SystemInfo , i cant access it. I cant access by telnet, by visual admin.
    In the work folder under \usr\sap\<sid>\JC00 i found that the last updated files are:
    - available.txt that contains the following data:
        Unavailable 08.08.2005 10:46:53 - 08.08.2005 10:58:54
        Available   08.08.2005 10:59:54 - 08.08.2005 13:52:54
        Unavailable 08.08.2005 13:53:54 - 08.08.2005 13:53:54
        Available   08.08.2005 13:54:54 - 08.08.2005 14:03:54
        Unavailable 08.08.2005 14:04:54 - 08.08.2005 14:04:54
        Available   08.08.2005 14:05:54 - 08.08.2005 14:34:54
        Unavailable 08.08.2005 14:35:54 - 08.08.2005 14:39:44
        Unavailable 08.08.2005 14:56:17 - 08.08.2005 16:24:13
        Unavailable 08.08.2005 16:28:07 - 08.08.2005 16:29:07
        Unavailable 08.08.2005 16:34:36 - 08.08.2005 17:17:58
        Unavailable 09.08.2005 08:13:36 - 09.08.2005 08:54:33
        Unavailable 09.08.2005 08:57:04 - 09.08.2005 12:46:25
        Available   09.08.2005 12:47:25 - 09.08.2005 13:26:25
        Available   09.08.2005 13:43:56 - 09.08.2005 13:55:56
        Unavailable 09.08.2005 13:56:40 - 09.08.2005 14:04:57
        Available   09.08.2005 14:05:57 - 09.08.2005 16:16:57
        Unavailable 09.08.2005 16:17:57 - 09.08.2005 17:27:12
        Unavailable 10.08.2005 08:10:30 - 10.08.2005 08:35:39
        Available   10.08.2005 08:36:39 - 10.08.2005 09:16:39
        Available   10.08.2005 12:33:51 - 10.08.2005 14:01:51
    - dev_jcontrol that contains the information displayed in the developer trace of jcontrol process(and y mentioned above)
    - dev_dispatcher that contains the following info:
        [Thr 2664] Wed Aug 10 08:33:04 2005
        [Thr 2664] JHVM_RegisterNatives: registering methods in com.sap.bc.proj.jstartup.JStartupFramework
        [Thr 2664] JLaunchISetClusterId: set cluster id 5761000
        [Thr 2664] JLaunchISetState: change state from [Initial (0)] to [Waiting for start (1)]
        [Thr 2664] JLaunchISetState: change state from [Waiting for start (1)] to [Starting (2)]
        [Thr 3320] Wed Aug 10 08:33:21 2005
        [Thr 3320] JLaunchISetP4Port: set p4 port 50004
        [Thr 3528] Wed Aug 10 08:33:26 2005
        [Thr 3528] JLaunchISetTelnetPort: set telnet port 50008
        [Thr 3528] JLaunchISetTelnetPort: set telnet port 50008
        [Thr 3584] Wed Aug 10 08:33:55 2005
        [Thr 3584] JLaunchISetHttpPort: set http port 50000
        [Thr 2664] Wed Aug 10 08:34:02 2005
        [Thr 2664] JLaunchISetState: change state from [Starting (2)] to [Running (3)]
        [Thr 2568] Wed Aug 10 08:34:08 2005
        [Thr 2568] JHVM_RegisterNatives: registering methods in com.sap.mw.rfc.driver.CpicDriver
        [Thr 3660] Wed Aug 10 08:35:07 2005
        [Thr 3660] JLaunchISetP4Port: set p4 port 50004
        [Thr 3600] Wed Aug 10 08:36:34 2005
        [Thr 3600] JLaunchISetHttpPort: set http port 50000
        [Thr 3612] Wed Aug 10 12:43:40 2005
        [Thr 3612] JLaunchISetHttpPort: set http port 50000
        [Thr 3612] JLaunchISetP4Port: set p4 port 50004
        [Thr 3612] JLaunchISetTelnetPort: set telnet port 50008
    - dev_server0 that contains:
        [Thr 2676] Wed Aug 10 08:33:06 2005
        [Thr 2676] JHVM_RegisterNatives: registering methods in com.sap.bc.proj.jstartup.JStartupFramework
        [Thr 2676] JLaunchISetClusterId: set cluster id 5761050
        [Thr 2676] JLaunchISetState: change state from [Initial (0)] to [Waiting for start (1)]
        [Thr 2676] JLaunchISetState: change state from [Waiting for start (1)] to [Starting (2)]
        [Thr 4296] Wed Aug 10 08:34:58 2005
        [Thr 4296] JHVM_RegisterNatives: registering methods in com.sap.mw.rfc.driver.CpicDriver
        [Thr 4296] Wed Aug 10 08:35:00 2005
        [Thr 4296] JHVM_RegisterNatives: registering methods in com.sap.mw.jco.util.SAPConverters
        [Thr 4296] JHVM_RegisterNatives: registering methods in com.sap.mw.jco.util.SAPCharToNUCByteConverter
        [Thr 4296] Wed Aug 10 08:35:01 2005
        [Thr 4296] JHVM_RegisterNatives: registering methods in com.sap.mw.jco.util.SAPNUCByteToCharConverter
        [Thr 2676] Wed Aug 10 08:35:07 2005
        [Thr 2676] JLaunchISetState: change state from [Starting (2)] to [Starting applications (10)]
        [Thr 208] Wed Aug 10 08:36:34 2005
        [Thr 208] JLaunchISetState: change state from [Starting applications (10)] to [Running (3)]
    I still dont know whats happening. And i need to solve the problem urgent. I hope u can help me.
    Thx and Rgds.
    Gregory.

  • DATE FIELD PROBLEMS - URGENT

    I´m having trouble with FormsCentral.
    My form is running about 8 months with no problems.
    Yesterday people started to complain that the system doesn´t accept any date.
    That means the date field restricts date entries, from date dd/mm/aaaa (brazilian format) to another dd/mm/aaaa, but every date that users input in, is considered by the system as invalid, even it´s a correct and valid date right between the interval specified!
    I need Help Urgent!!!
    I depend on these forms to finish the payrol service from here.
    Thanks
    I´ll be waiting.
    Maurício Galletti
    Message was edited by: SNOWMAUSS
    It look like the system accepts just dates starting from the date of today.
    I´m testing.
    Please help.
    Thanks
    Message was edited by: SNOWMAUSS
    It looks like the system have some problem just with the date 20/10/2013?!
    I´ve fixed the problem change the interval from 20/10/2013 to another date  and used  21/10/2013 to another date and it works!
    But I think something is wrong with the 20/10/2013 date?!
    To reproduce the erros just create a new form with date feature with this exaclty configurations and the bug appears:
    I´ll keep waiting
    Message was edited by: SNOWMAUSS

    Hi
    I´ve concluded that the problem persist if the date interval starts at the
    specific date "20/10/2013". Don´t know why?!
    Look at the screen capture above, you aks for
    Thanks a lot
    image: Imagem inline 1
    Maurício P. Galletti
    Contador
    [email protected]
    ( 55 11 3331-5567
    www.cadt.com.br
    2013/10/29 Genevieve Laroche <[email protected]>
       Re: DATE FIELD PROBLEMS - URGENT  created by Genevieve Laroche<http://forums.adobe.com/people/Genevieve+Laroche>in
    FormsCentral - View the full discussion<http://forums.adobe.com/message/5797083#5797083

  • Details:  i can not buy any thing from the app store and any thing from in side any games pls fix my problem urgent and as soon

    Details:
    Hi i can not buy any thing from the app store and any thing from in side any games pls fix my problem urgent and as soon
    Note this is second email pls answer and fix my problem
    <Email Edited by Host>

    These are public forums, you are not talking to iTunes Support here (most of the people here, including myself, are fellow users) - I've asked the hosts to remove your email address from your post
    If you are getting a message to contact iTunes support then you can do so via this page and ask them why the message is appearing (we won't know why) : http://www.apple.com/support/itunes/contact/ - click on Contact iTunes Store Support on the right-hand side of the page, then Purchases, Billing & Redemption
    If it's a different problem ... ?

  • URGENT HELP NEEDED FOR JTABLE PROBLEM!!!!!!!!!!!!!!!!!

    firstly i made a jtable to adds and deletes rows and passes the the data to the table model from some textfields. then i wanted to add a tablemoselistener method in order to change the value in the columns 1,2,3,4 and set the result of them in the column 5. when i added that portion of code the buttons that added and deleted rows had problems to function correctly..they dont work at all..can somebody have a look in my code and see wot is wrong..thanx in advance..
    below follows the code..sorry for the mesh of the code..you can use and run the code and notice the problem when you press the add button..also if you want delete the TableChanged method to see that the add button works perfect.
    * Created on 03-Aug-2005
    * TODO To change the template for this generated file go to
    * Window - Preferences - Java - Code Style - Code Templates
    * @author Administrator
    * TODO To change the template for this generated type comment go to
    * Window - Preferences - Java - Code Style - Code Templates
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Vector;
    import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.event.TableModelEvent;
    import javax.swing.event.TableModelListener;
    import java.io.*;
    public class NodesTable extends JFrame implements TableModelListener, ActionListener {
    JTable jt;
    DefaultTableColumnModel dtcm;
    TableColumn column[] = new TableColumn[100];
    DefaultTableModel dtm;
    JLabel Name,m1,w1,m2,w2;
    JTextField NameTF,m1TF,w1TF,m2TF,w2TF;
    String c [] ={ "Name", "Assessment1", "Weight1" , "Assessment2","Weight2 ","TotalMark"};
    float x=0,y=0,tMark=0,z = 0;
    float j=0;
    int i;
         JButton DelButton;
         JButton AddButton;
         JScrollPane scrollPane;
         JPanel mainPanel,buttonPanel;
         JFrame frame;
         Object[][] data =
              {"tami", new Float(1), new Float(1.11), new Float(1.11),new Float(1),new Float(1)},
              {"tami", new Float(1), new Float(2.22), new Float(2.22),new Float(1),new Float(1)},
              {"petros", new Float(1), new Float(3.33), new Float(3.33),new Float(1),new Float(1)},
              {"petros", new Float(1), new Float(4.44), new Float(4.44),new Float(1),new Float(1)}
    public NodesTable() {
    super("Student Marking Spreadsheet");
    this.AddNodesintoTable();
    setSize(400,250);
    setVisible(true);
    public void AddNodesintoTable(){
    // Create a vector object and load them with the data
    // to be placed on each row of the table
    dtm = new DefaultTableModel(data,c);
    dtm.addTableModelListener( this );
    jt = new JTable(dtm){
         // Returning the Class of each column will allow different
              // renderers to be used based on Class
              public Class getColumnClass(int column)
                   return getValueAt(0, column).getClass();
              // The Cost is not editable
              public boolean isCellEditable(int row, int column)
                   int modelColumn = convertColumnIndexToModel( column );
                   return (modelColumn == 5) ? false : true;
    //****************************User Input**************************
    //Add another node
    //Creating and setting the properties
    //of the panel's component (panels and textfields)
    Name = new JLabel("Name");
    Name.setForeground(Color.black);
    m1 = new JLabel("Mark1");
    m1.setForeground(Color.black);
    w1 = new JLabel("Weigth1");
    w1.setForeground(Color.black);
    m2= new JLabel("Mark2");
    m2.setForeground(Color.black);
    w2 = new JLabel("Weight2");
    w2.setForeground(Color.black);
    NameTF = new JTextField(5);
    NameTF.setText("Node");
    m1TF = new JTextField(5);
    w1TF = new JTextField(5);
    m2TF=new JTextField(5);
    w2TF=new JTextField(5);
    //creating the buttons
    JPanel buttonPanel = new JPanel();
    AddButton=new JButton("Add Row");
    DelButton=new JButton("Delete") ;
    buttonPanel.add(AddButton);
    buttonPanel.add(DelButton);
    //adding the components to the panel
    JPanel inputpanel = new JPanel();
    inputpanel.add(Name);
    inputpanel.add(NameTF);
    inputpanel.add(m1);
    inputpanel.add(m1TF);
    inputpanel.add(w1);
    inputpanel.add(w1TF);
    inputpanel.add(m2);
    inputpanel.add(m2TF);
    inputpanel.add(w2TF);
    inputpanel.add(w2);
    inputpanel.add(AddButton);
    inputpanel.add(DelButton);
    //creating the panel and setting its properties
    JPanel tablepanel = new JPanel();
    tablepanel.add(new JScrollPane(jt, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED
    , JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));
    getContentPane().add(tablepanel, BorderLayout.CENTER);
    getContentPane().add(inputpanel, BorderLayout.SOUTH);
    //Method to add row for each new entry
    public void addRow()
    Vector r=new Vector();
    r=createBlankElement();
    dtm.addRow(r);
    jt.addNotify();
    public Vector createBlankElement()
    Vector t = new Vector();
    t.addElement((String) " ");
    t.addElement((String) " ");
    t.addElement((String) " ");
    t.addElement((String) " ");
    t.addElement((String) " ");
    return t;
    // Method to delete a row from the spreadsheet
    void deleteRow(int index)
    if(index!=-1) //At least one Row in Table
    dtm.removeRow(index);
    jt.addNotify();
    // Method that adds and deletes rows
    // from the table by pressing the
    //corresponding buttons
    public void actionPerformed(ActionEvent ae){
         Float z=new Float (m2TF.getText());
    String Name= NameTF.getText();
    Float x= new Float(m1TF.getText());
    Float y= new Float(w1TF.getText());
    Float j=new Float (w2TF.getText());
    JFileChooser jfc2 = new JFileChooser();
    String newdata[]= {Name,String.valueOf(x),String.valueOf(y),
    String.valueOf(z),String.valueOf(j)};
    Object source = ae.getSource();
    if(ae.getSource() == (JButton)AddButton)
    addRow();
    if (ae.getSource() ==(JButton) DelButton)
    deleteRow(jt.getSelectedRow());
    //method to calculate the total mark in the TotalMark column
    //that updates the values in every other column
    //It takes the values from the column 1,2,3,4
    //and changes the value in the column 5
    public void tableChanged(TableModelEvent e) {
         System.out.println(e.getSource());
         if (e.getType() == TableModelEvent.UPDATE)
              int row = e.getFirstRow();
              int column = e.getColumn();
              if (column == 1 || column == 2 ||column == 3 ||column == 4)
                   TableModel model = jt.getModel();
              float     q= ((Float)model.getValueAt(row,1)).floatValue();
              float     w= ((Float)model.getValueAt(row,2)).floatValue();
              float     t= ((Float)model.getValueAt(row,3)).floatValue();
              float     r= ((Float)model.getValueAt(row,4)).floatValue();
                   Float tMark = new Float((q*w+t*r)/(w+r) );
                   model.setValueAt(tMark, row, 5);
    // Which cells are editable.
    // It is only necessary to implement this method
    // if the table is editable
    public boolean isCellEditable(int row, int col)
    { return true; //All cells are editable
    public static void main(String[] args) {
         NodesTable t=new NodesTable();
    }

    There are too many mistakes in your program. It looks like you are new to java.
    Your add and delete row buttons are not working because you haven't registered your action listener with these buttons.
    I have modifide your code and now it works fine. Just put some validation code for the textboxes becuase it throws exception when user presses add button without entering anything.
    Here is the updated code: Do the diff and u will know my changes
    * Created on 03-Aug-2005
    * TODO To change the template for this generated file go to
    * Window - Preferences - Java - Code Style - Code Templates
    * @author Administrator
    * TODO To change the template for this generated type comment go to Window -
    * Preferences - Java - Code Style - Code Templates
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.event.TableModelEvent;
    import javax.swing.event.TableModelListener;
    import javax.swing.table.DefaultTableColumnModel;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableColumn;
    import javax.swing.table.TableModel;
    public class NodesTable extends JFrame implements TableModelListener,
              ActionListener {
         JTable jt;
         DefaultTableColumnModel dtcm;
         TableColumn column[] = new TableColumn[100];
         DefaultTableModel dtm;
         JLabel Name, m1, w1, m2, w2;
         JTextField NameTF, m1TF, w1TF, m2TF, w2TF;
         String c[] = { "Name", "Assessment1", "Weight1", "Assessment2", "Weight2 ",
                   "TotalMark" };
         float x = 0, y = 0, tMark = 0, z = 0;
         float j = 0;
         int i;
         JButton DelButton;
         JButton AddButton;
         JScrollPane scrollPane;
         JPanel mainPanel, buttonPanel;
         JFrame frame;
         public NodesTable() {
              super("Student Marking Spreadsheet");
              this.AddNodesintoTable();
              setSize(400, 250);
              setVisible(true);
         public void AddNodesintoTable() {
              // Create a vector object and load them with the data
              // to be placed on each row of the table
              dtm = new DefaultTableModel(c,0);
              dtm.addTableModelListener(this);
              jt = new JTable(dtm) {
                   // The Cost is not editable
                   public boolean isCellEditable(int row, int column) {
                        int modelColumn = convertColumnIndexToModel(column);
                        return (modelColumn == 5) ? false : true;
              //****************************User Input**************************
              //Add another node
              //Creating and setting the properties
              //of the panel's component (panels and textfields)
              Name = new JLabel("Name");
              Name.setForeground(Color.black);
              m1 = new JLabel("Mark1");
              m1.setForeground(Color.black);
              w1 = new JLabel("Weigth1");
              w1.setForeground(Color.black);
              m2 = new JLabel("Mark2");
              m2.setForeground(Color.black);
              w2 = new JLabel("Weight2");
              w2.setForeground(Color.black);
              NameTF = new JTextField(5);
              NameTF.setText("Node");
              m1TF = new JTextField(5);
              w1TF = new JTextField(5);
              m2TF = new JTextField(5);
              w2TF = new JTextField(5);
              //creating the buttons
              JPanel buttonPanel = new JPanel();
              AddButton = new JButton("Add Row");
              AddButton.addActionListener(this);
              DelButton = new JButton("Delete");
              DelButton.addActionListener(this);
              buttonPanel.add(AddButton);
              buttonPanel.add(DelButton);
              //adding the components to the panel
              JPanel inputpanel = new JPanel();
              inputpanel.add(Name);
              inputpanel.add(NameTF);
              inputpanel.add(m1);
              inputpanel.add(m1TF);
              inputpanel.add(w1);
              inputpanel.add(w1TF);
              inputpanel.add(m2);
              inputpanel.add(m2TF);
              inputpanel.add(w2TF);
              inputpanel.add(w2);
              inputpanel.add(AddButton);
              inputpanel.add(DelButton);
              //creating the panel and setting its properties
              JPanel tablepanel = new JPanel();
              tablepanel.add(new JScrollPane(jt,
                        JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                        JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));
              getContentPane().add(tablepanel, BorderLayout.CENTER);
              getContentPane().add(inputpanel, BorderLayout.SOUTH);
         //Method to add row for each new entry
         public void addRow() {
              Float z = new Float(m2TF.getText());
              String Name = NameTF.getText();
              Float x = new Float(m1TF.getText());
              Float y = new Float(w1TF.getText());
              Float j = new Float(w2TF.getText());
              String newdata[] = { Name, String.valueOf(x), String.valueOf(y),
                        String.valueOf(z), String.valueOf(j) };
              dtm.addRow(newdata);
         // Method to delete a row from the spreadsheet
         void deleteRow(int index) {
              if (index != -1) //At least one Row in Table
                   dtm.removeRow(index);
                   jt.addNotify();
         // Method that adds and deletes rows
         // from the table by pressing the
         //corresponding buttons
         public void actionPerformed(ActionEvent ae) {
              Object source = ae.getSource();
              if (ae.getSource() == (JButton) AddButton) {
                   addRow();
              if (ae.getSource() == (JButton) DelButton) {
                   deleteRow(jt.getSelectedRow());
         //method to calculate the total mark in the TotalMark column
         //that updates the values in every other column
         //It takes the values from the column 1,2,3,4
         //and changes the value in the column 5
         public void tableChanged(TableModelEvent e) {
              System.out.println(e.getSource());
              //if (e.getType() == TableModelEvent.UPDATE) {
                   int row = e.getFirstRow();
                   int column = e.getColumn();
                   if (column == 1 || column == 2 || column == 3 || column == 4) {
                        TableModel model = jt.getModel();
                        float q = (new Float(model.getValueAt(row, 1).toString())).floatValue();
                        float w = (new Float(model.getValueAt(row, 2).toString())).floatValue();
                        float t = (new Float(model.getValueAt(row, 3).toString())).floatValue();
                        float r = (new Float(model.getValueAt(row, 4).toString())).floatValue();
                        Float tMark = new Float((q * w + t * r) / (w + r));
                        model.setValueAt(tMark, row, 5);
         // Which cells are editable.
         // It is only necessary to implement this method
         // if the table is editable
         public boolean isCellEditable(int row, int col) {
              return true; //All cells are editable
         public static void main(String[] args) {
              NodesTable t = new NodesTable();
    }

  • JTable: renderer problem-urgent

    Thanx "pasteven". That url is too good.
    I wrote my own renderer for each cell in JTable that uses JCombobox for rendering purpose. But when i select an item in that combo box, some times renderer is not setting the selected item in that combobox. Sometimes when i change the selection of item in the previous cell,it is getting reflected in all other cells of that particular column.
    Here is my code. Please help me.
    import java.util.*;
    import java.io.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.event.*;
    import javax.swing.text.*;
    import javax.swing.table.TableCellEditor.*;
    import javax.swing.table.*;
    import javax.swing.DefaultCellEditor;
    public class Render extends javax.swing.JFrame {
    JTextField textField0=new JTextField();
    JComboBox cmb_Editor1=new JComboBox();
    JComboBox cmb_Editor2=new JComboBox();
    JComboBox cmb_Editor3=new JComboBox();
    EachRowRenderer rend;
    EachRowEditor eee;
    /** Creates new form Render */
    public Render() {
    initComponents ();
    rend=new EachRowRenderer();
    eee=new EachRowEditor(table);
    table.setDefaultRenderer(java.lang.Object.class,rend);
    table.setDefaultEditor(java.lang.Object.class,eee);
    cmb_Editor3.addItem("Y");
    cmb_Editor3.addItem("N");
    eee.setEditorAt(0,1,new DefaultCellEditor(cmb_Editor3));
    eee.setEditorAt(1,1,new DefaultCellEditor(cmb_Editor3));
    eee.setEditorAt(2,1,new DefaultCellEditor(cmb_Editor3));
    eee.setEditorAt(0,2,new DefaultCellEditor(new JCheckBox()));
    rend.add(0,2,new CheckBoxCellRenderer());
    rend.add(0,1,new ComboBoxCellRenderer(cmb_Editor3));
    rend.add(1,1,new ComboBoxCellRenderer(cmb_Editor3));
    rend.add(2,1,new ComboBoxCellRenderer(cmb_Editor3));
    JCheckBox chk=new JCheckBox();
    pack ();
    public class EachRowEditor implements TableCellEditor {
    protected Hashtable editors;
    protected TableCellEditor editor, defaultEditor;
    JTable table;
    public EachRowEditor(JTable table) {
    this.table = table;
    editors = new Hashtable();
    defaultEditor = new DefaultCellEditor(new JTextField());
    public void setEditorAt(int row,int column, TableCellEditor editor) {
    editors.put(""+row+column,editor);
    public Component getTableCellEditorComponent(JTable table,
    Object value, boolean isSelected, int row, int column) {
    return editor.getTableCellEditorComponent(table,
    value, isSelected, row, column);
    public Object getCellEditorValue() {
    return editor.getCellEditorValue();
    public boolean stopCellEditing() {
    return editor.stopCellEditing();
    public void cancelCellEditing() {
    editor.cancelCellEditing();
    public boolean isCellEditable(EventObject anEvent) {
    selectEditor((MouseEvent)anEvent);
    // editor.isCellEditable(anEvent);
         return true;
    public void addSeperateCellEditorListener(int row,int column,CellEditorListener l) {
    editor=(TableCellEditor)editors.get(""+row+column);
    editor.addCellEditorListener(l);
    public void addCellEditorListener(CellEditorListener l) {
    editor.addCellEditorListener(l);
    public void removeCellEditorListener(CellEditorListener l) {
    editor.removeCellEditorListener(l);
    public boolean shouldSelectCell(EventObject anEvent) {
    selectEditor((MouseEvent)anEvent);
    return editor.shouldSelectCell(anEvent);
    protected void selectEditor(MouseEvent e) {
    int row;
    int column;
    if (e == null) {
    row = table.getSelectionModel().getAnchorSelectionIndex();
    column=table.getSelectionModel().getLeadSelectionIndex();
    } else {
    row = table.rowAtPoint(e.getPoint());
    column=table.columnAtPoint(e.getPoint());
    editor = (TableCellEditor)editors.get(""+row+column);
    if (editor == null) {
    editor = defaultEditor;
    public class CheckBoxCellRenderer extends JCheckBox implements TableCellRenderer
    CheckBoxCellRenderer() {
    setHorizontalAlignment(JLabel.CENTER);
    public Component getTableCellRendererComponent(JTable table, Object value,
    boolean isSelected, boolean hasFocus,
    int row, int column) {
    setSelected((value != null && ((Boolean)value).booleanValue()));
    setToolTipText("checkbox");
    return this;
    public class TextFieldCellRenderer extends JTextField implements TableCellRenderer
    JTextField textField;
    TextFieldCellRenderer(JTextField textField) {
    this.textField=textField;
    public Component getTableCellRendererComponent(JTable table, Object value,
    boolean isSelected, boolean hasFocus,
    int row, int column) {
    setText((textField.getText() != null) ? textField.getText() : "");
    return textField;
    public class ComboBoxCellRenderer extends JComboBox implements TableCellRenderer
    JComboBox comboBox=null;
    ComboBoxCellRenderer(JComboBox comboBox) {
    this.comboBox=comboBox;
    public Component getTableCellRendererComponent(JTable table, Object value,
    boolean isSelected, boolean hasFocus,
    int row, int column) {
    setSelectedItem(comboBox.getSelectedItem());
    return this;
    public class EachRowRenderer implements TableCellRenderer {
    protected Hashtable renderers;
    protected TableCellRenderer renderer, defaultRenderer;
    public EachRowRenderer() {
    renderers = new Hashtable();
    defaultRenderer = new DefaultTableCellRenderer();
    public void add(int row,int column ,TableCellRenderer renderer) {
    renderers.put(""+row+column,renderer);
    public Component getTableCellRendererComponent(JTable table,
    Object value, boolean isSelected, boolean hasFocus,
    int row, int column) {
    renderer = (TableCellRenderer)renderers.get(""+row+column);
    if (renderer == null) {
    renderer = defaultRenderer;
    return renderer.getTableCellRendererComponent(table,
    value, isSelected, hasFocus, row, column);
    /** 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 FormEditor.
    private void initComponents() {
    jScrollPane1 = new javax.swing.JScrollPane();
    table = new javax.swing.JTable();
    addWindowListener(new java.awt.event.WindowAdapter() {
    public void windowClosing(java.awt.event.WindowEvent evt) {
    exitForm(evt);
    table.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"
    Class[] types = new Class [] {
    java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class
    public Class getColumnClass (int columnIndex) {
    return types [columnIndex];
    jScrollPane1.setViewportView(table);
    getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
    System.exit (0);
    * @param args the command line arguments
    public static void main (String args[]) {
    new Render ().show ();
    // Variables declaration - do not modify
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable table;
    // End of variables declaration
    Please help me.

    I ran into the same problem in Java 1.4. The problem is that the JTable is not feeding the initial value to the cell editor. I found the following workaround. You have to override the JTable method prepareEditor() like this:
    <CODE>
    public Component prepareEditor(TableCellEditor editor, int row, int column) {
    Component ret = super.prepareEditor(editor, row, column);
    // Translate column to the data model coordinates by using the
    // identifier. We'll check only for the JComboBox columns (in
    // this example columns 8 and 9).
    int col = 0;
    String id = (String)getColumnModel().getColumn(column).getIdentifier();
    if ( id.equals( tableModel.getColumnName(8) ) )
    col = 8;
    else if ( id.equals( tableModel.getColumnName(9) ) )
    col = 9;
    if (col == 8 || col == 9) {
    String item = (String)tableModel.getValueAt(row, col);
    ((JComboBox)((DefaultCellEditor)editor).getComponent()).setSelectedItem( item );
    return ret;
    </CODE>
    You have to translate from table coordinates to table model coordinates in case the user reorders column - if you don't allow this for your table then you won't have to do this.

  • JTable Display problem (urgent)

    Hi all,
    Does anyone here know how to make a all columnns in my table visible
    This is my code. It simple bunches up the columns but I need them spaced out.
    Thanks all :)
    import java.awt.*;
    import javax.swing.*;
    import java.util.*;
    public class TableProblem extends JFrame {
    Vector rows, columnHeads;
    BorderLayout borderLayout1 = new BorderLayout();
    JScrollPane jScrollPane1 = new JScrollPane();
    JTable jTable1 = new JTable();
    public TableProblem ()
    testData(); // used to put data in the vectors for the table
    initTable(); // used to instantiate and setup the gui
    setSize(1100,600);
    show();
    public static void main(String[] args) {
    TableProblem tprob = new TableProblem();
    public void testData ()
    int mc = 100;
    int mr = 100;
    int k = 0;
    Vector temp;
    columnHeads = new Vector();
    for (int i=0; i<mc; i++)
    columnHeads.addElement(Integer.toString(i));
    rows = new Vector();
    for (int i=0; i<mr; i++)
    temp = new Vector();
    for (int j=0; j<mc; j++)
    temp.addElement(Integer.toString(k++));
    rows.addElement(temp);
    public void initTable()
    getContentPane().setLayout(borderLayout1);
    jTable1 = new JTable(rows,columnHeads);
    jScrollPane1 = JTable.createScrollPaneForTable(jTable1);
    getContentPane().add(jScrollPane1, BorderLayout.CENTER);
    jScrollPane1.getViewport().add(jTable1,null);
    jScrollPane1.getViewport().add(jTable1, null);
    jTable1.setMinimumSize(new Dimension(8000,2000));
    /****************************************************/

    If I understood you correctly, I think this is what you need:
    // Prohibit table from resizing itself
    jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    Regards,
    Boris

  • JTable problem plz help me urgent

    sir
    i carefully read the swing tutorial for JTable for the purpose
    of rendring specially header rendring.
    first u see the code
    import java.awt.event.*;
    import javax.swing.*;
    import java.awt.*;
    import javax.swing.border.*;
    import java.util.*;
    import javax.swing.table.*;
    public class Myscrollpane extends JScrollPane
    ImageIcon icon=new ImageIcon("images/beach1.jpg");
    Image img;
    int w,h,wi,hi;
    TableColumn column = null;
    /*Vector cols=new Vector();
    cols.addElement("Company Code");
    cols.addElement("Company Name");
    String[] names = {"Company Code", "Company Name"};
    DefaultTableModel model=new DefaultTableModel(names,0);
    JTable table=new JTable(model);
    LogoViewport vp;//custom class extends with JViewport
    Myscrollpane(int width,int height)
    vp= new LogoViewport(width,height);
    setOpaque(false);
    setMinimumSize(new Dimension(width,height));
    setPreferredSize(new Dimension(width,height));
    setSize(350,125);
    ///////////here r the table methods to control /////////////////////
    table.setPreferredScrollableViewportSize(new Dimension(width,height));
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF );
    table.getTableHeader().setReorderingAllowed(false);
    table.setBackground(new Color(245,235,237));
    table.setForeground(Color.black);
    table.setOpaque(true);
    table.setEnabled(false);
    table.setFont(new java.awt.Font("Dialog", Font.ITALIC, 12));
    table.setGridColor(Color.pink);
    table.setRowHeight(22);
    table.setSelectionBackground(Color.lightGray);
    DefaultTableCellRenderer renderer=new DefaultTableCellRenderer();
    TableColumn code=table.getColumnModel().getColumn(0);
    renderer.setBackground(Color.red);
    ????//if i use the setIcon method then the data comes from the database
    ????//is not shown because the icon paint above the data.
    code.setCellRenderer(renderer);
    TableCellRenderer headerRenderer = table.getTableHeade.().getDefaultRenderer();
    TableColumn column1=null;
    ???//i use this to change the color of header column but it is not work
    for (int j = 0; j < 2; j++) {
    column1 = table.getColumnModel().getColumn(j);
    Component comp = headerRenderer.getTableCellRendererComponent(
    null, column1.getHeaderValue(),
    false, false, 0, 0);
    comp.setBackground(Color.red);
    ???//if i use following it also not work
    TableCellRenderer headerRenderer = table.getTableHeader().
    getDefaultRenderer();
    if (headerRenderer instanceof DefaultTableCellRenderer) {
    ((DefaultTableCellRenderer)headerRenderer).setBackground(Color.red);}
    for (int i = 0; i <=1; i++)
    column = table.getColumnModel().getColumn(i);
    if (i == 0) {
    column.setPreferredWidth(100);
    else
    column.setPreferredWidth(225);
    vp.setView(table);
    this.setViewport(vp);
    plz help me with the code.
    i also want to draw the image on the table with the use of DefaultTabel
    Model and data set from the data base.Initally no row is shown.
    plz help me
    shown(???) are the quesstion which i am unable to solve.
    thanks in advance.

    Formatting the code makes it easier to read, which means more people may attempt to read your code and answer your questions. Click on the "Help" link at the top of the page.
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.*;
    public class TableHeader extends JFrame
        public TableHeader()
            JTable table = new JTable(5, 5);
            table.setPreferredScrollableViewportSize(table.getPreferredSize());
            JScrollPane scrollPane = new JScrollPane( table );
            getContentPane().add( scrollPane );
            table.getTableHeader().setBackground( Color.red );
        public static void main(String[] args)
            TableHeader frame = new TableHeader();
            frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
            frame.pack();
            frame.setLocationRelativeTo( null );
            frame.setVisible(true);
    }

  • JTable problem plz help me urgent withDefault TableModel

    sir
    i carefully read the swing tutorial for JTable for the purpose
    of rendring specially header rendring.
    first u see the code
    import java.awt.event.*;
    import javax.swing.*;
    import java.awt.*;
    import javax.swing.border.*;
    import java.util.*;
    import javax.swing.table.*;
    public class Myscrollpane extends JScrollPane {
    ImageIcon icon=new ImageIcon("images/beach1.jpg");
    Image img;
    int w,h,wi,hi;
    TableColumn column = null;
    String[] names = {"Company Code", "Company Name"};
    DefaultTableModel model=new DefaultTableModel(names,0);
    JTable table=new JTable(model);
    LogoViewport vp;//user class extends with JViewport
    Myscrollpane(int width,int height){
    vp= new LogoViewport(width,height);
    setOpaque(false);
    setMinimumSize(new Dimension(width,height));
    setPreferredSize(new Dimension(width,height));
    setSize(350,125);
    ///////////here r the table methods tocontrol /////////////////////
    table.setPreferredScrollableViewportSize(new Dimension width,height));
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF );
    table.getTableHeader().setReorderingAllowed(false);
    table.setBackground(new Color(245,235,237));
    table.setForeground(Color.black);
    table.setOpaque(true);
    table.setEnabled(false);
    table.setFont(new java.awt.Font("Dialog", Font.ITALIC, 12));
    table.setGridColor(Color.pink);
    table.setRowHeight(22);
    table.setSelectionBackground(Color.lightGray);
    DefaultTableCellRenderer renderer=new DefaultTableCellRenderer();
    TableColumn code=table.getColumnModel().getColumn(0);
    renderer.setBackground(Color.red);
    //if i use the setIcon method then the data comes from the database is
    //not shown because the icon paint above the data.Iwant to paint the
    //image on the table dynamically means as table populated the image is
    //paint on the table means no fix no of rows.How can i
    //do.
    code.setCellRenderer(renderer);
    TableCellRenderer headerRenderer = table.getTableHeade.().getDefaultRenderer();
    TableColumn column1=null;
    //i use this to change the color and paste icon of header column
    //but it is not work
    for (int j = 0; j < 2; j++) {
    column1 = table.getColumnModel().getColumn(j);
    Component comp = headerRenderer.getTableCellRendererComponent(null, column1.getHeaderValue(), false, false, 0, 0);
    comp.setBackground(Color.red);
    comp.setIcon(new ImageIcon("myimage.gif")); }
    //if i use following it also not work
    TableCellRenderer headerRenderer = table.getTableHeader().getDefaultRenderer();
    if (headerRenderer instanceof DefaultTableCellRenderer) {((DefaultTableCellRenderer)headerRenderer).setBackground(Color.red);} vp.setView(table);
    this.setViewport(vp);
    }plz help me with the code.
    stated as above i also want to draw the image on the table with the use of DefaultTabel
    Model and data set from the data base.Initally no row is shown.
    plz help me
    thanks in advance

    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.*;
    public class TableHeader extends JFrame
        public TableHeader()
            Object[] columnNames =
                new ImageIcon("copy16.gif"),
                "Some Text",
                new ImageIcon("add16.gif")
            //  Columns headings are cast to a String when created automatically.
            //  We want Icons, so use a special renderer and create the columns manually
            JTable table = new JTable();
            table.getTableHeader().setDefaultRenderer( new HeaderRenderer() );
            for (int i = 0; i < columnNames.length; i++)
                TableColumn newColumn = new TableColumn(i);
                newColumn.setHeaderValue( columnNames[i] );
                table.addColumn(newColumn);
            table.setPreferredScrollableViewportSize(table.getPreferredSize());
            JScrollPane scrollPane = new JScrollPane( table );
            getContentPane().add( scrollPane );
        class HeaderRenderer extends DefaultTableCellRenderer
            public Component getTableCellRendererComponent(
                JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col)
                setBorder(UIManager.getBorder("TableHeader.cellBorder"));
                setHorizontalAlignment(CENTER);
                //  color each cell
                if (col == 1)
                    setBackground( Color.yellow );
                else
                    setBackground( Color.green );
                //  display text or icon
                if (value instanceof Icon)
                    setIcon( (Icon)value );
                    setText( "" );
                else
                    setIcon( null );
                    setText((value == null) ? "" : value.toString());
                return this;
        public static void main(String[] args)
            TableHeader frame = new TableHeader();
            frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
            frame.pack();
            frame.setLocationRelativeTo( null );
            frame.setVisible(true);
    }

  • JTable Listener problem - Urgent Please:)

    How to make listeners detect both change of rows and columns.
    I used ListSelectionListners but that only fires on change of row., How do I detect change of column within the same row?
    Sincerely,

    d

  • JTable problem...can anybody help me...

    hi i have try out some jtable program. I have done some alteration to the table that it can resize row and column via the gridline. but it seems that when i'm resizing through the gridline, the row header did not resize. I sense that the row header not syncronizing with the main table. So when i'm tried to resize, the row header didn't
    can you solve my problem...
    //the main program
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.*;
    public class Test {     public static void main(String[] args)
         //row headers:     
         String[][] rowHeaders = {{"Alpha"},{"Beta"}, {"Gamma"}};
         JTable leftTable = new JTable(rowHeaders, new Object[]{""});
         leftTable.setDefaultRenderer(
              Object.class, leftTable.getTableHeader().getDefaultRenderer());
         leftTable.setPreferredScrollableViewportSize(new Dimension(50,100));      
         //main table:
         Object[][] sampleData = {{"Homer", "Simpson"},{"Seymour","Skinner"},{"Ned","Flanders"}};
         JTable mainTable = new JTable(sampleData, new Object[]{"",""});
         //scroll pane:
         JScrollPane sp = new JScrollPane(
              mainTable, ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);     
              sp.setRowHeaderView(leftTable);          
              sp.setColumnHeaderView(null);      
         new TableColumnResizer(mainTable);
         new TableRowResizer(mainTable); 
         //frame:
         final JFrame f = new JFrame("Test");
         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         f.getContentPane().add(sp);     
         f.pack();
         SwingUtilities.invokeLater(new Runnable(){
                   public void run(){     f.setLocationRelativeTo(null);
                                       f.setVisible(true);               }          });     
    }This the TableColumnResizer.java
    import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.event.MouseInputAdapter;
    import java.awt.*;
    import java.awt.event.MouseEvent;
    import java.awt.event.*;
    public class TableColumnResizer extends MouseInputAdapter
        public static Cursor resizeCursor = Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR);
        private int mouseXOffset;
        private Cursor otherCursor = resizeCursor;
        private JTable table;
        public TableColumnResizer(JTable table){
            this.table = table;
            table.addMouseListener(this);
            table.addMouseMotionListener(this);
        private boolean canResize(TableColumn column){
            return column != null
                    && table.getTableHeader().getResizingAllowed()
                    && column.getResizable();
        private TableColumn getResizingColumn(Point p){
            return getResizingColumn(p, table.columnAtPoint(p));
        private TableColumn getResizingColumn(Point p, int column){
            if(column == -1){
                return null;
            int row = table.rowAtPoint(p);
            if(row==-1)
                return null;
            Rectangle r = table.getCellRect(row, column, true);
            r.grow( -3, 0);
            if(r.contains(p))
                return null;
            int midPoint = r.x + r.width / 2;
            int columnIndex;
            if(table.getTableHeader().getComponentOrientation().isLeftToRight())
                columnIndex = (p.x < midPoint) ? column - 1 : column;
            else
                columnIndex = (p.x < midPoint) ? column : column - 1;
            if(columnIndex == -1)
                return null;
            return table.getTableHeader().getColumnModel().getColumn(columnIndex);
        public void mousePressed(MouseEvent e){
            table.getTableHeader().setDraggedColumn(null);
            table.getTableHeader().setResizingColumn(null);
            table.getTableHeader().setDraggedDistance(0);
            Point p = e.getPoint();
            // First find which header cell was hit
            int index = table.columnAtPoint(p);
            if(index==-1)
                return;
            // The last 3 pixels + 3 pixels of next column are for resizing
            TableColumn resizingColumn = getResizingColumn(p, index);
            if(!canResize(resizingColumn))
                return;
            table.getTableHeader().setResizingColumn(resizingColumn);
            if(table.getTableHeader().getComponentOrientation().isLeftToRight())
                mouseXOffset = p.x - resizingColumn.getWidth();
            else
                mouseXOffset = p.x + resizingColumn.getWidth();
        private void swapCursor(){
            Cursor tmp = table.getCursor();
            table.setCursor(otherCursor);
            otherCursor = tmp;
        public void mouseMoved(MouseEvent e){
            if(canResize(getResizingColumn(e.getPoint()))
               != (table.getCursor() == resizeCursor)){
                swapCursor();
        public void mouseDragged(MouseEvent e){
            int mouseX = e.getX();
            TableColumn resizingColumn = table.getTableHeader().getResizingColumn();
            boolean headerLeftToRight =
                    table.getTableHeader().getComponentOrientation().isLeftToRight();
            if(resizingColumn != null){
                int oldWidth = resizingColumn.getWidth();
                int newWidth;
                if(headerLeftToRight){
                    newWidth = mouseX - mouseXOffset;
                } else{
                    newWidth = mouseXOffset - mouseX;
                resizingColumn.setWidth(newWidth);
                Container container;
                if((table.getTableHeader().getParent() == null)
                   || ((container = table.getTableHeader().getParent().getParent()) == null)
                                    || !(container instanceof JScrollPane)){
                    return;
                if(!container.getComponentOrientation().isLeftToRight()
                   && !headerLeftToRight){
                    if(table != null){
                        JViewport viewport = ((JScrollPane)container).getViewport();
                        int viewportWidth = viewport.getWidth();
                        int diff = newWidth - oldWidth;
                        int newHeaderWidth = table.getWidth() + diff;
                        /* Resize a table */
                        Dimension tableSize = table.getSize();
                        tableSize.width += diff;
                        table.setSize(tableSize);
                         * If this table is in AUTO_RESIZE_OFF mode and has a horizontal
                         * scrollbar, we need to update a view's position.
                        if((newHeaderWidth >= viewportWidth)
                           && (table.getAutoResizeMode() == JTable.AUTO_RESIZE_OFF)){
                            Point p = viewport.getViewPosition();
                            p.x =
                                    Math.max(0, Math.min(newHeaderWidth - viewportWidth, p.x + diff));
                            viewport.setViewPosition(p);
                            /* Update the original X offset value. */
                            mouseXOffset += diff;
        public void mouseReleased(MouseEvent e){
            table.getTableHeader().setResizingColumn(null);
            table.getTableHeader().setDraggedColumn(null);
    } This is TableRowResizer.java
    import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.event.MouseInputAdapter;
    import java.awt.*;
    import java.awt.event.MouseEvent;
    public class TableRowResizer extends MouseInputAdapter
        public static Cursor resizeCursor = Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR);
        private int mouseYOffset, resizingRow;
        private Cursor otherCursor = resizeCursor;
        private JTable table;
        public TableRowResizer(JTable table){
            this.table = table;
            table.addMouseListener(this);
            table.addMouseMotionListener(this);
        private int getResizingRow(Point p){
            return getResizingRow(p, table.rowAtPoint(p));
        private int getResizingRow(Point p, int row){
            if(row == -1){
                return -1;
            int col = table.columnAtPoint(p);
            if(col==-1)
                return -1;
            Rectangle r = table.getCellRect(row, col, true);
            r.grow(0, -3);
            if(r.contains(p))
                return -1;
            int midPoint = r.y + r.height / 2;
            int rowIndex = (p.y < midPoint) ? row - 1 : row;
            return rowIndex;
        public void mousePressed(MouseEvent e){
            Point p = e.getPoint();
            resizingRow = getResizingRow(p);
            mouseYOffset = p.y - table.getRowHeight(resizingRow);
        private void swapCursor(){
            Cursor tmp = table.getCursor();
            table.setCursor(otherCursor);
            otherCursor = tmp;
        public void mouseMoved(MouseEvent e){
            if((getResizingRow(e.getPoint())>=0)
               != (table.getCursor() == resizeCursor)){
                swapCursor();
        public void mouseDragged(MouseEvent e){
            int mouseY = e.getY();
            if(resizingRow >= 0){
                int newHeight = mouseY - mouseYOffset;
                if(newHeight > 0)
                    table.setRowHeight(resizingRow, newHeight);
    }

    cross-post: http://forum.java.sun.com/thread.jspa?forumID=57&threadID=755250

  • JTable Problems - JDK 1.2.2_05a & JDK 1.3.0

    Hi,
    I have a JTable program that works in JDK 1.2.2_05a but it no longer works when I run the 1.2.2 compiled version in a 1.3.0 environment or compiled and run in a 1.3.0 environment. The problem is that the JTable doesn't accept any keyboard inputs. Is there a known issue about this? If not, has anyone else run into this problem before? Any help is greatly appreciated. Many Thanks In Advance!
    Juivette

    I too face a similar problem. I had a JTable code which worked perfectly in 1.3.0. But when I recompiled it in 1.2.2_09 and ran it., I get square boxes when I try to set value to a cell.
    I think., the square box is the Enter Key I press for setting value. Has any one faced this problem before ?
    and suggest how to overcome ??
    regards
    Sriram

  • Pricing problem-Urgent

    Hi all,
    iam getting a problem regarding pricing.
    When i make a Sales doc. with reference to an invoice,
    everything is being copied from invoice to the sales doc.-customer, material  and its no. , sales area, payment terms, incoterms, and material qty. also.
    But the pricing of the invoice is not getting copied on to the sales doc.
    I have maintained all checks available in the sales doc. type and the item category of the sales doc. type i.e
    Pricing: X
    and then in OVKK , i have maintained the doc. pric. procedure of the sales doc. type  with the pricing procedure of the invoice
    and again in the copy control measures, i have maintained
    Pricing type: D
    But i still not able to copy pricing procedure from the invoice to the Sales doc.
    I want the soltn. urgently.
    Thanks in advance
    Sourav

    run VTAF for your sales doc type/bil type
    and check item category
    set flag for "update doc flow"
    and pricing type B

  • HTML Link problem (Urgent!)

    I'm writing a prrogram that displays an HTML file. I used a JEditorPane. I tryed using the hyperlinkListener but it doesn't work! here's the class I wrote...
    can anyone help please?
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.*;
    import javax.swing.*;
    import browser.*;
    import java.net.*;
    import javax.swing.event.*;
    * Classe :
    * Description :
    * Societe : Medias France
    * @version 1.0
    public class Aide extends JFrame implements HyperlinkListener
         BrowserInterface bI;
         URL url1;
         static Interface parent;
         public Aide(String titre, Interface i)
              super(titre);
              parent = i;
              getContentPane().setLayout(new BorderLayout());
              //bI = new BrowserInterface(jp);
              setBounds(10,10,800,600);
              addWindowListener(new WindowAdapter()
                   public void windowClosing(WindowEvent e)
                   quit(null);
              try
                   url1 = new URL("file:/home/darkazan/java/BDO/tablegen-1.8/help/help.html");
                   //bI.URL_Process(url1);
              catch (MalformedURLException e)
                   System.out.println("probleme " + e.toString());
              JEditorPane editorPane = new JEditorPane();
         editorPane.setEditable(false);
         try
         editorPane.setPage(url1);
         catch (IOException e)
         System.err.println("Attempted to read a bad URL: " + url1);
         JScrollPane editorScrollPane = new JScrollPane(editorPane);
              editorScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
         editorScrollPane.setPreferredSize(new Dimension(800, 600));
         getContentPane().add(editorScrollPane, "Center");
         pack();
         setVisible(true);
         public void hyperlinkListener(HyperlinkEvent e)
              if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
         // do something on HL click
    System.out.println("ouverture");
              if (e.getEventType() == HyperlinkEvent.EventType.ENTERED)
              // do something on mouse over HL
         // do something on HL click
         System.out.println("bbbbbbbbbbbbbbbbbbbb");
    if (e.getEventType() == HyperlinkEvent.EventType.EXITED)
    // do something on HL click
    System.out.println("ggggggggggggggggggg");
    // do something on mouse moved away from HL
         public void hyperlinkUpdate(HyperlinkEvent e)
         public static void main(String[] args)
              Aide aide1 = new Aide("Help", parent);
         * Quitter l'application
         * @param     e L'evenement recu
         * @return     Sans objet.
         void quit(ActionEvent e)
              parent.bAide.setEnabled(true);
              dispose();
    }

    also check your file protocol it should look like this: file:/// with three slashes(i think?)
    here Mr. Urgent, my html viewer: (and it works) ;P
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.text.*;
    import javax.accessibility.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.net.URL;
    import java.net.MalformedURLException;
    import java.io.IOException;
    public class iROCHelp extends JPanel implements HyperlinkListener{
    //ATTRIBUTES
    JEditorPane html;
    private static boolean HelpShowing = false;
    private static JFrame selTopic;
    //METHODS
    //Constructor
    public iROCHelp(java.net.URL URLstr){
    //setBorder(new EmptyBorder());
    setLayout(new BorderLayout());
    try{
    URL url = URLstr;
    if(url != null){
    html = new JEditorPane(url);
    html.setEditable(false);
    html.addHyperlinkListener(this);
    JScrollPane scroller = new JScrollPane();
    JViewport vp = scroller.getViewport();
    vp.add(html);
    vp.setBackingStoreEnabled(true);
    add(scroller, BorderLayout.CENTER);
    catch (MalformedURLException e){
    System.out.println("Malformed URL: " + e);
    catch (IOException e){
    System.out.println("IOException: " + e);
    }//HelpTopic CONSTRUCTOR
    public void hyperlinkUpdate(HyperlinkEvent e){
    if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED){
    linkActivated(e.getURL());
    }//hyperlinkUpdate
    protected void linkActivated(URL u){
    Cursor c = html.getCursor();
    Cursor waitCursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR);
    html.setCursor(waitCursor);
    SwingUtilities.invokeLater(new PageLoader(u, c));
    }//linkActivated
    class PageLoader implements Runnable{
    PageLoader(URL u, Cursor c){
    url = u;
    cursor = c;
    public void run(){
    if (url == null){
    // restore the original cursor
    html.setCursor(cursor);
    Container parent = html.getParent();
    parent.repaint();
    else{
    Document doc = html.getDocument();
    try{
    html.setPage(url);
    catch (IOException ioe){
    html.setDocument(doc);
    finally{
    // schedule the cursor to revert after
    // the paint has happended.
    url = null;
    SwingUtilities.invokeLater(this);
    }//else
    }//run
    URL url;
    Cursor cursor;
    }//PageLoader
    public static void spawnHelp(java.net.URL URLStr){
    if (!HelpShowing){
    selTopic = new JFrame();
    selTopic.getContentPane().setLayout(new BorderLayout());
    selTopic.getContentPane().add(new iROCHelp(URLStr),BorderLayout.CENTER);
    Dimension dim = selTopic.getToolkit().getScreenSize();
    selTopic.setLocation((int)dim.getWidth()/2-selTopic.getWidth()/2,(int)dim.getHeight()/2-selTopic.getHeight()/2);
    selTopic.setSize(500, 400);
    selTopic.setTitle("Remote Operators Console Help");
    selTopic.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
    closeHelp();
    }//windowClosing
    selTopic.show();
    HelpShowing = true;
    }//if help showing
    }//spawnHelp
    public static void closeHelp(){
    if (HelpShowing){
    selTopic.dispose();
    HelpShowing = false;
    }//closeHelp
    }//HelpTopic CLASS

  • How to display images in a Jtable cell-Urgent

    Hay all,
    Can anybody tell me that can we display images to JTable' cell,If yes the how do we do that(with some code snippet)? Its very urgent .Plz reply as soon as possible.

    Here is an example
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;
    class SimpleTableExample extends JFrame
         private     JPanel  topPanel;
         private     JTable  table;
         private     JScrollPane scrollPane;
         public SimpleTableExample()
              setTitle( "Table With Image" );
              setSize( 300, 200 );
              setBackground( Color.gray );
              topPanel = new JPanel();
              topPanel.setLayout( new BorderLayout() );
              getContentPane().add( topPanel );
              // Create columns names
              String columnNames[] = { "Col1", "Col2", "Col3" };
              // Create some data
              Object data[][] =
                   { (ImageIcon) new ImageIcon("User.Gif"), (String) "100", (String)"101" },
                   { (String)"102", (String)"103", (String)"104" },
                   { (String)"105", (String)"106", (String)"107" },
                   { (String)"108", (String)"109", (String)"110" },
              // Create a new table instance
    DefaultTableModel model = new DefaultTableModel(data, columnNames);
              JTable table = new JTable( model )
                   public Class getColumnClass(int column)
                        return getValueAt(0, column).getClass();
              };          // Add the table to a scrolling pane
              scrollPane = new JScrollPane( table );
              topPanel.add( scrollPane, BorderLayout.CENTER );
         public static void main( String args[] )
              SimpleTableExample mainFrame     = new SimpleTableExample();
              mainFrame.setVisible( true );
    }

Maybe you are looking for