How do I create subheading in JTables or JXTable

I want to create a table which has 2 columns... say column 1 and column2. Column 2 has more further divisions to create another 2 column (say A and B).
Im not sure on how to express my question better so I just painted out the kind of table I wanted. Please check the image and provide techniques on how it can be done using either JTable or JXTable?
Check the link for the table Im expecting:
http://img241.imageshack.us/img241/4461/exampletablezm0.gif

Thanks.... exactly what I was looking for!! But was hoping for a simpler way or something integrated with JXTable. Never mind... just used the updated code ( http://www.swebb99.f2s.com/GroupableHeader/ ) for jdk5

Similar Messages

  • How do I create a jtable with horizontalScroll bar,plz help me!

    I created a jtable component,Because my table's columns has 50 items,I must need a horizontalScroll Bar.
    but I find the horizontalScroll don't display,when I add record to the jtable,the verticalScroll Bar is showed.How do I create a jtable with horizontalScroll bar,can u help me!
    thank you in advance!

    Hi,
    This piece of code will help :
         //Get the Component Adapter for taking action against resizing of
    //of Panel
    ComponentListenerAdapter componentAdapter =
    new ComponentListenerAdapter()
    //Get the scrollbar or remove the scrollbar upon resizing
    protected void resizingAction()
    Container tableParent = table.getParent();
    if (tableParent instanceof JViewport)
    //Check if the width of the Table Parent Container
    //is less than the Preferred Size of the Table
    if (tableParent.getSize().getWidth() <
    table.getPreferredSize().getWidth())
    //Yes it is
    //Remove the Auton Resize Function and get the
    //Scrollbar
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF );
    else
    //No it is not
    //Get the Auto Resize functionality back in place
    table.setAutoResizeMode(
    JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
    //Add the component Adapter to the Table Header
    table.getTableHeader().addComponentListener(componentAdapter);
    private abstract class ComponentListenerAdapter
    implements ComponentListener
              * The <code>componentHidden<code> method has no implementation
              * @param event The Event occured whenever the Component is Hidden
              public void componentHidden(ComponentEvent event)
                   //No Implementaion - Intentially Left Blank
              * The <code>componentShown</code> method has no implementation
              * @param event The Event occured whenever the Component is Shown
              public void componentShown(ComponentEvent event)
                   //No Implementaion - Intentially Left Blank
              * The <code>componentMoved</code> method has no implementation
              * @param event The Event occured whenever the Component is Moved
              public void componentMoved(ComponentEvent event)
                   //No Implementaion - Intentially Left Blank
              * The <code>componentResized</code> method is invoked whenever the
              * component is resized. The resizing action will set the columns and
              * scrollbar to act properly
              * @param event The Event occured whenever the Component is Resized
              public void componentResized(ComponentEvent event)
                   resizingAction();
    * Subclasses of this override this method to determine what is to be
    * done once the Component has been Resized
    protected abstract void resizingAction();
    Hope this will solve all your JTable horizontal resizing problems
    --j                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • How do I create a JTable with some empty cells in it?

    I have a three column JTable. The first column is a String showing description. The second column contains numbers (double) and the third column also contains numbers. In some cases not all cells in a row should contain data. So for instance, I could have row one showing only description (a String in the first column), and then row two showing description (a String in the first column) and a number (a double in the second column) in columns one and two respectively. My problem is that, the data gets copied from the cells with data to the cells which are supposed to be empty. So, how do I create a JTable with some empty cells in it.

    I have tried empty strings for those values, but it did not work. My table puts objects in an arraylist called reconciliation. The arraylist takes different objects with the same super class. The code below explains. Are you suggesting I pass null to my constructor?
    JTable table = new JTable(new ReconTableModel());The method below is from the table model
    protected  List<Reconciliation> reconciliation = new ArrayList<Reconciliation>();
    protected void fillModel(){
          reconciliation.add(new CashBook("Cash Book Report"," "," "));
          reconciliation.add(new CheckingBankAccount("Checking Bank Account"," "," "));
          reconciliation.add(new BankBalance("Bank Balance As Per Bank Statement",500," "));
          reconciliation.add(new PaymentVouchers("Payment Voucher Receipt",300," "));
          reconciliation.add(new DepositVoucher("Deposit Voucher Receipt",1000," "));
          reconciliation.add(new ReconciledBalance("Reconcilied Bank Balance",1200," "));
          reconciliation.add(new BalanceAt("Bank Balance At",800," "));
          reconciliation.add(new Difference("Difference",400," "));
          Collections.sort( reconciliation, new Comparator<Reconciliation>(){
          public int compare( Reconciliation a, Reconciliation b) {
            return a.getTransactionName().compareTo( b.getTransactionName());
      }

  • Query by example - how can I display VCRow in JTable?

    I would like to provide the user with a searchable table.
    Actually I would like to use two tables: one, displaying one row where the user can specify the search criteria. And the second table should display the data found.
    I could store the entered criteria locally in a hashmap in TableModel, for example, then create a WHERE clause. This solution is quite messy, since the user can add, remove and rearrange the columns of both tables.
    Or I could use -I hope- the query-by-example feature, like this:
    am = app.getApplicationModule();
    ViewObject vo = am.createViewObject( "MyVO", "mypackage1.PatView" );
    ViewCriteria vc = vo.createViewCriteria();
    ViewCriteriaRow vcr = vc.createViewCriteriaRow();
    Now I can set attributes and use vo.applyViewCriteria() to find my data.
    But how can I bring the first JTable to display this single ViewCriteriaRow, so that the user can do the editing?
    The JUNavigationBar does it, if I am not mistaken. It switches the PanelBinding to find mode, and then a JTable displays a ViewCriteriaRow (?) instead of the ViewObject's data. But I don't want to use the bar. How do I create this behaviour manually?
    The javadoc of JUPanelBinding says:
    "Sets this panel and all its associated iterators into find mode."
    So I guess that setting iterators into find mode is what I need. But I cannot figure out how to do that. Who can?

    You cannot set the iterators in a panelBinding to separate find/data modes individually.
    However you can create two JUPanelBinding objects one for the findMode form and one that displays Data.
    here's what I did to modify a generated SingleForm, to display two panels of the same type one in find mode and other in data mode.
    I changed the jbInit method of the "LayoutPanel" class to be like:
    //declare this as a member of the class.
    JButton findBtn;
    public void jbInit() throws Exception
    // Panel layout
    masterViewPanel = new PanelDeptView(panelBinding);
    //create another instance of PanelBinding for a second (findform) DeptView panel.
    JUPanelBinding binding = new JUPanelBinding("Project3.Mypackage1Module", this);
    binding.setApplication(panelBinding.getApplication());
    masterViewPanel1 = new PanelDeptView(binding); //create second instance
    findBtn = masterViewPanel1.navBar.getButton(JUNavigationBar.BUTTON_FIND);
    findBtn.doClick(); //set the second instance in find mode.
    //add a listener on the second instance's execute button so that it resets the form into find mode
    //this forces the second instance to be in find mode when execute button is pressed.
    masterViewPanel1.navBar.getButton(JUNavigationBar.BUTTON_EXECUTE).addActionListener(new ActionListener()
    public void actionPerformed(ActionEvent ev)
    SwingUtilities.invokeLater(new Runnable() {
    public void run()
    findBtn.doClick();
    this.setLayout(panelLayout);
    add(masterViewPanel, BorderLayout.WEST);
    //add the second instance.
    add(masterViewPanel1, BorderLayout.EAST);
    I also had to call findBtn.doClick() again in the "constructor" that takes (JUApplication, boolean) after the panelBinding is executed,
    to force the initial startup of this panel in findmode

  • How do I create this Swing widget?

    I have not found a swing widget that looks like the one on the image below. It is similar to the JScrollPane widget but this one has columns as well. How do I create a widget like this in Java?
    http://www.sitepoint.com/forums/attachment.php?attachmentid=38360

    Place a JTable in a JScrollPane.
    ICE

  • Creating and filling JTables dynamically

    Hello,
    How can I create and display a JTable dynamically in a Java application? In my application, I retrieve rows from a database and therefore I don't know in advance how many rows I need for my JTable (using the tablemodel). I tried to solve the problem in the following way:
    1)start op applicatie with a JTable with 0 rows (screen is grey, only columns are visible)
    2)run query and count number of rows.
    3)create new JTable based on number retrieved in step 2 and tried to put it onto the screen.
    4)run query again and fill table with values retrieved from query
    The bottleneck so far is step 3. I can create a new table but I don't manage to put it onto the screen (i tried already the repaint() method)
    Thanx for you help
    Frits

    Sure, no problem. Assume you've retrieved the following result from the database:First Name     Last Name     Age
    John           Doe           25
    Jane           Doe           27
    Joe            Smith         40
    Mary           Smith         19You create your JTable as like this:Vector headings = new Vector();
    Vector rows = new Vector();
    Vector cells = null;
    JTable table = null;
    for(int x=0; x< resultSize; x++){//resultSize is the size of your result
      cells = new Vector(); //Cells together will represent a row
      cells.add(yourResult.getTheFirstColumnForRowX()); //Pseudo-code
      cells.add(yourResult.getTheSecondColumnForRowX()); //Pseudo-code
      cells.add(yourResult.getTheThirdColumnForRowX()); //Pseudo-code
      //Now place those cells into the rows vector
      rows.add(cells);
    //Create the JTable
    table = new JTable(rows, headings);This code is not tested and is meant to give you an idea of how the concept can be applied. Hope it helps.

  • How to Connect MySQL Database Through JTable?

    Hi,
    How to Connect MySQL Database Through JTable? anyone of u knows these concept please send me coding of that Part..
    Thanks,
    Guru..

    Start by reading the tutorials. There's a section on Swing which shows you how to use tables and a section on JDBC which shows you how to use SQL.
    And you can always search the forum as well since there are working examples of both posted on the forum.
    If you need further help with a specific problem then you need to create a [Short, Self Contained, Compilable and Executable, Example Program (SSCCE)|http://homepage1.nifty.com/algafield/sscce.html], that demonstrates the incorrect behaviour.
    Don't forget to use the [Code Formatting Tags|http://forum.java.sun.com/help.jspa?sec=formatting], so the posted code retains its original formatting.

  • How can I create JScrollPane in my swing application with scroll bars movin

    Hi,
    How can we create scrollpanes moving with scrollbars.I tried many times with custom layout.but it does not work if i set custom layout.I hope that I will get my problem solved.
    Thanks and Regards,
    Rameh RK

    This means it is not possible to create a pure unicode file without the byte order mark?
    You wouldn't happen to know how a file with byte order mark should read on a Linux system?
    Or if this possible or not?
    Regards
    Christian

  • How do i create 4 different itunes id's in one household?

    How can I create 4 different iTunes id's in one household so that when backing up to icloud, we can each have separate back ups?

    The same way you create one, but do it four times! 

  • How do i creating multiple icloud accounts for one itunes account

    how do i creating multiple icloud accounts to access one itunes account?

    Perhaps you could explain a bit more what you want to do...
    iCloud accounts don't access an iTunes account.
    iTunes account is used to make purchases.

  • HT204053 I have one apple ID that my entire family has been using.  How do I create new apple ID's for each of us and move the appropriate content to each new ID from the original apple ID now that we all have our own devices?

    I have been using one apple ID for 4 family members.  Up until now it hasn't been a problem but now that we all have our own devices how do I create new apple ID's for each of us and them move the approprioate things from the original apple ID account to the new ones for each of us?

    stuartx4 wrote:
    Thanks Csound1, wish I have seperated everything from the beginning but when your kids are little and start buying music etc it just didn't seem like an issue.
    That has a familiar ring to it

  • TS2756 How can i create a new usb connection (service)  on my iMac for sharing internet from my iPhone5 ( i seem have to deleted it )

    How can i create a new usb connection (service)  on my iMac for sharing internet from my iPhone5 ( i seem have to deleted it )
    i know its not a problem whit my carrier o data plan or sharing preferences on the ipone because when i use it un my laptop it works perfectly through
    the usb and even works on the Imac through wifi and bluethood tethering but NOT through usb!!.
    the problem is that trying to make it work i deleted the "profile" usb iphone on the network prefereces panel. Now i only have 3 options: ethernet / wifi / bluetooth
    but not the usb iPhone i used to have.
    And when i try to add a new one i dont get a USB option.
    can some one help me please??
    this is how it looks (after the bluetooth PAN i used to have USB iPhone option)

    The question would be more appropriate in the Mac forums as it is not really related to the iPhone.

  • How can I create a new layer that is a gradient?

    Hi, i'm very new to photoshop scripting and am having some trouble.
    I'm looking for a way to take an image i have and set it to have a gradient opacity as it approaches the middle, my thought on how to do that was to just create a layer that is a gradient from top left to bottom right and then attach that as a vector mask.
    Any ideas on how I could create this gradient layer in script, or a better method of doing this opacity gradient?
    Thanks in advance,
    Levianth

    You could try this:
    // 2012, use it at your own risk;
    #target photoshop
    if (app.documents.length > 0) {
    var myDocument = app.activeDocument;
    var theLayer = myDocument.activeLayer;
    if (theLayer.isBackgroundLayer == true) {theLayer.isBackgroundLayer = false};
    // create gradient layer;
    // =======================================================
    var idMk = charIDToTypeID( "Mk  " );
        var desc15 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref3 = new ActionReference();
            var idcontentLayer = stringIDToTypeID( "contentLayer" );
            ref3.putClass( idcontentLayer );
        desc15.putReference( idnull, ref3 );
        var idUsng = charIDToTypeID( "Usng" );
            var desc16 = new ActionDescriptor();
            var idType = charIDToTypeID( "Type" );
                var desc17 = new ActionDescriptor();
                var idType = charIDToTypeID( "Type" );
                var idGrdT = charIDToTypeID( "GrdT" );
                var idLnr = charIDToTypeID( "Lnr " );
                desc17.putEnumerated( idType, idGrdT, idLnr );
                var idGrad = charIDToTypeID( "Grad" );
                    var desc18 = new ActionDescriptor();
                    var idNm = charIDToTypeID( "Nm  " );
                    desc18.putString( idNm, "Custom" );
                    var idGrdF = charIDToTypeID( "GrdF" );
                    var idGrdF = charIDToTypeID( "GrdF" );
                    var idCstS = charIDToTypeID( "CstS" );
                    desc18.putEnumerated( idGrdF, idGrdF, idCstS );
                    var idIntr = charIDToTypeID( "Intr" );
                    desc18.putDouble( idIntr, 4096.000000 );
                    var idClrs = charIDToTypeID( "Clrs" );
                        var list3 = new ActionList();
                            var desc19 = new ActionDescriptor();
                            var idClr = charIDToTypeID( "Clr " );
                                var desc20 = new ActionDescriptor();
                                var idRd = charIDToTypeID( "Rd  " );
                                desc20.putDouble( idRd, 0.000000 );
                                var idGrn = charIDToTypeID( "Grn " );
                                desc20.putDouble( idGrn, 0.000000 );
                                var idBl = charIDToTypeID( "Bl  " );
                                desc20.putDouble( idBl, 0.000000 );
                            var idRGBC = charIDToTypeID( "RGBC" );
                            desc19.putObject( idClr, idRGBC, desc20 );
                            var idType = charIDToTypeID( "Type" );
                            var idClry = charIDToTypeID( "Clry" );
                            var idUsrS = charIDToTypeID( "UsrS" );
                            desc19.putEnumerated( idType, idClry, idUsrS );
                            var idLctn = charIDToTypeID( "Lctn" );
                            desc19.putInteger( idLctn, 0 );
                            var idMdpn = charIDToTypeID( "Mdpn" );
                            desc19.putInteger( idMdpn, 50 );
                        var idClrt = charIDToTypeID( "Clrt" );
                        list3.putObject( idClrt, desc19 );
                            var desc21 = new ActionDescriptor();
                            var idClr = charIDToTypeID( "Clr " );
                                var desc22 = new ActionDescriptor();
                                var idRd = charIDToTypeID( "Rd  " );
                                desc22.putDouble( idRd, 0.000000 );
                                var idGrn = charIDToTypeID( "Grn " );
                                desc22.putDouble( idGrn, 0.000000 );
                                var idBl = charIDToTypeID( "Bl  " );
                                desc22.putDouble( idBl, 0.000000 );
                            var idRGBC = charIDToTypeID( "RGBC" );
                            desc21.putObject( idClr, idRGBC, desc22 );
                            var idType = charIDToTypeID( "Type" );
                            var idClry = charIDToTypeID( "Clry" );
                            var idUsrS = charIDToTypeID( "UsrS" );
                            desc21.putEnumerated( idType, idClry, idUsrS );
                            var idLctn = charIDToTypeID( "Lctn" );
                            desc21.putInteger( idLctn, 4096 );
                            var idMdpn = charIDToTypeID( "Mdpn" );
                            desc21.putInteger( idMdpn, 50 );
                        var idClrt = charIDToTypeID( "Clrt" );
                        list3.putObject( idClrt, desc21 );
                    desc18.putList( idClrs, list3 );
                    var idTrns = charIDToTypeID( "Trns" );
                        var list4 = new ActionList();
                            var desc23 = new ActionDescriptor();
                            var idOpct = charIDToTypeID( "Opct" );
                            var idPrc = charIDToTypeID( "#Prc" );
                            desc23.putUnitDouble( idOpct, idPrc, 0.000000 );
                            var idLctn = charIDToTypeID( "Lctn" );
                            desc23.putInteger( idLctn, 0 );
                            var idMdpn = charIDToTypeID( "Mdpn" );
                            desc23.putInteger( idMdpn, 50 );
                        var idTrnS = charIDToTypeID( "TrnS" );
                        list4.putObject( idTrnS, desc23 );
                            var desc24 = new ActionDescriptor();
                            var idOpct = charIDToTypeID( "Opct" );
                            var idPrc = charIDToTypeID( "#Prc" );
                            desc24.putUnitDouble( idOpct, idPrc, 100.000000 );
                            var idLctn = charIDToTypeID( "Lctn" );
                            desc24.putInteger( idLctn, 2048 );
                            var idMdpn = charIDToTypeID( "Mdpn" );
                            desc24.putInteger( idMdpn, 50 );
                        var idTrnS = charIDToTypeID( "TrnS" );
                        list4.putObject( idTrnS, desc24 );
                            var desc25 = new ActionDescriptor();
                            var idOpct = charIDToTypeID( "Opct" );
                            var idPrc = charIDToTypeID( "#Prc" );
                            desc25.putUnitDouble( idOpct, idPrc, 0.000000 );
                            var idLctn = charIDToTypeID( "Lctn" );
                            desc25.putInteger( idLctn, 4096 );
                            var idMdpn = charIDToTypeID( "Mdpn" );
                            desc25.putInteger( idMdpn, 50 );
                        var idTrnS = charIDToTypeID( "TrnS" );
                        list4.putObject( idTrnS, desc25 );
                    desc18.putList( idTrns, list4 );
                var idGrdn = charIDToTypeID( "Grdn" );
                desc17.putObject( idGrad, idGrdn, desc18 );
            var idgradientLayer = stringIDToTypeID( "gradientLayer" );
            desc16.putObject( idType, idgradientLayer, desc17 );
        var idcontentLayer = stringIDToTypeID( "contentLayer" );
        desc15.putObject( idUsng, idcontentLayer, desc16 );
    executeAction( idMk, desc15, DialogModes.NO );
    // move layer below;
    var theGradient = myDocument.activeLayer;
    theGradient.move(theLayer, ElementPlacement.PLACEAFTER);
    // clipping mask;
    theLayer.grouped = true

  • How do I create a new icloud email address for my apple id?

    Hi there
    How do I create a new icloud email address for my apple id? My original email address is associated with my previous employers.
    When I send email from my Macbook, it seems as if I still work there, which is a problem.
    I would like to use the email address that I created for my iPad.
    When I login with my appleid (for my macbook) I keep getting the old company one, not the new one.
    Is there any way of resolving this? I
    Thanks
    Kelvin

    Welcome to the Apple Community.
    Providing you aren't trying to change you Apple iCloud email address you can make changes at My Apple ID

  • How can I create a new ring tone for my iPhone 4?

    How can I create a new ring tone for my iPhone 4? I followed the Garage Band process and ended up with the ring tone I want as a AAC audio file. It got stored in my iTunes a a song rather than a ring tone. How do I make it a ring tone vs. a song? I tried dragging it t the Ring Tone category at the bottom of the ITunes list, but it won't alloow me to move it?

    There's also an easy to use Applescript over at Doug's Applescripts for iTunes. It automates the whole thing. All you do is set the start and stop time on a file in iTuens and run the script. It will do everything else.
    Make Ringable v1.1
    http://dougscripts.com/475

Maybe you are looking for

  • Enquiry of ATP in sales order

    Dear experts, In the sales order, I can view the availability when clicking availability check. There're two fields, like "delivery", "confirmed delivery". I create the delivery for the sales order. But those two fields does not get updated. What doe

  • Substitute fields in table BSEC

    Hello to you all, Does anyone know of an option to substitute fields in table BSEC while posting FI doc? Using FM SAMPLE_PROCESS_00001120 (of course, a local Z version of the FM), is not relevant as mentioned in NOTE 996552 The rest of the FM in the

  • Loggin in oracle bpel

    Hello Everyone, Can anyone please tell me how can we log messages in a bpel flow ( in a log file or database) and can we define log levels there for logging?

  • What is the best way to upgrade to a new kernel?

    I would like to upgrade to the new kernel: kernel26-2.6.23.14-1 from the one from core (on the CD). What is the best way to do this? Also, is there a way to find out what is new / has changed in the new kernel? Thanks for any insights.

  • How do I turn debug on

    Hi folks I am migrating from MS env. to Apex and I am struggling with tracking debug messages. Here is a message I get. "1 error has occurred•ORA-06550: line 1, column 7: PLS-00103: Encountered the symbol ";" when expecting one of the following: ( be