Error when using custom cell renderer

Sorry if this is wrong section, but honestly, this forum seems a bit unorganized and confusing xD.
Well well, to the issue. I am trying this [Swing - resizing ListCellRenderers using JTextArea and word wrap|http://forums.sun.com/thread.jspa?messageID=9977618#9977618] because I need word wrap in my list items, but it isn't going very well because I am getting this:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to status.Status$MyListItemat status.Status$MyListCellRenderer.getListCellRendererComponent(Status.java:515)
/.../>
Here is my code: pastebin (pastebinned for line numbers and to not make this post enormous)
Edited by: vigge_sWe on Jun 18, 2009 6:41 AM
Edited by: vigge_sWe on Jun 18, 2009 6:42 AM

vigge_sWe wrote:
Sorry if this is wrong section, but honestly, this forum seems a bit unorganized and confusing xD.
Well well, to the issue. I am trying this [Swing - resizing ListCellRenderers using JTextArea and word wrap|http://forums.sun.com/thread.jspa?messageID=9977618#9977618] because I need word wrap in my list items, but it isn't going very well because I am getting this:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to status.Status$MyListItemat status.Status$MyListCellRenderer.getListCellRendererComponent(Status.java:515)
/.../>Your ListModel works with Strings. Why would you expect it to return MyListItem instances all of a sudden?
You can cut with a click, but you've got to paste with a brain.

Similar Messages

  • Help: Jbo Exception non blocking when using table cell renderer?

    Hi,
    JClient 9.5.2.
    When using Table Cell Renderer on an table cell attribute that is defined mandatory and activating the insert button, the (oracle.jbo.AttrValException) JBO-27014 exception is caught but it is not blocking and a new row is still inserted.
    The JClient component demo, table attribute list, has the same behaviour.
    You can add multiple rows even if not all required attributes have been documented.
    Can a Swing specialist help me on this one?
    Example of Table Cell Renderer:
    public class TableBasicStatusRenderer extends DefaultTableCellRenderer
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
    int row, int column)
    JLabel lb = new JLabel((String) StaticData.getStatusName(value)); // retrieves label from Map
    return lb;
    Regards
    Frederic

    Hi,
    I found something interesting, it could be a WORKAROUND!
    I noticed that in another detail panel with table layout the JBO exception was blocking and adding another row before completing the row was NOT possible.
    In the create method of the entity object of the displayed View Object I iterate over the detail row iterator to retrieve a maximum value.
    By the end of the method the pointer is positionned after the last row.
    So I added to the detail panel that doesn't block following code:
    In create method of detail Entity Object Impl (only one entity object involved for this View)
    // Retrieve master EntityObjectImpl from association:
    PostalTariffImpl postalTariffImpl = getPostalTariffAssoc();
    // Retrieve detail default row iterator
    RowIterator ri = postalTariffImpl.getPostalDetailGroupAssoc();
    // Position pointer after last row
    ri.last();
    ri.next();
    Question: Why does this solve the problem?
    Regards
    Frederic
    PS Les mysteres de l'informatique!

  • PO PDF errors when using custom RTF Template, but works with custom xsl

    Hi,
    I have done following set up steps for PO PDF
    Setup / Organizations / Purchasing Options / Control TAB / set 'PO Output Format' = 'PDF'
    setup / purchasing / document types / select "Standard Purchase Order" / Set the Document Type Layout to your new template.
    But with the RTF template the PO Output for communication completes with error. However when I use custom XSL-FO style sheet, it works.
    Can anyone help me how I can make my RTF work? When click on the preview of the template, it shows the PDF output though. Am I missing any other set up steps? Your help is greatly appreciated.
    Thanks,
    Sharmila

    I think the only way to have control over the html output is to enclose the tags or any information within a borderless table and align the text and table as necessary...
    Thanks,
    Bipuser

  • Build error when using custom error codes

    When I try to build my application using custom error codes I receive the following error:
    Error 1 occurred at Copy in AB_Engine_Copy_Error_Files.vi->AB_Application.lvclass:Copy_Error_Files.vi->AB_Application.lvclass:Copy_Files.vi->AB_Build.lvclass:Build.vi->AB_EXE.lvclass:Build.vi->AB_Engine_Build.vi->AB_Build_Invoke.vi->AB_Build_Invoke.vi.ProxyCaller
    Possible reason(s):
    LabVIEW:  An input parameter is invalid. For example if the input is a path, the path might contain a character not allowed by the OS such as ? or @.
    =========================
    NI-488:  Command requires GPIB Controller to be Controller-In-Charge.
    C:\Program Files\National Instruments\LabVIEW 8.5\user.lib\errors\BPMS-errors.txt
    This only occurs the first time I attempt to build my application. If I build again immediately after receiving the error, everything works fine. My custom error codes were created using the provided editor, and I have included the file in my project. I have also checked the "Copy error codes" box in the advanced build specification settings.

    Hi Donovan,
    The attached project is giving me the error previously discussed. Thanks for your help.
    Attachments:
    BuildError.zip ‏10 KB

  • Unknown namespace prefix Error - when using custom Aliases with RDF aliases

    I am getting unknown namespace prefix error when I use custome SEM_ALIAS with rdf SEM_ALIAS. It seems once you specify custom SEM_ALIAS, the default rdf alias is not recognized. Following are the details of queries
    I have a sem_Model "test" which has "event" as a class and "Merger" as a sub-class of event, with "acquiringorg" as a property having the domain "org". "Org" is also defined as a class with the literal attribute "hasname". I have added one instance of "merger" class with appropriate values for "acquiringorg" property. There is one instance or "Org" as well for reference in the instance above.
    the following query(return all objects having property "acquiringorg" and its .e. "hasName" attribute for the object) runs fine and returns appropriate resultset
    select x event,z acquiringorg ,l acquireeorg from table(SEM_MATCH(
    '(?x Evnt:AcquiringOrg ?y)(?k orgn:hasName ?l)',
    SEM_MODELS('test'),
    null,
    SEM_ALIASES(SEM_ALIAS('Evnt','http://www.abc.com/Event/Merger/'),
    SEM_ALIAS('orgn','http://www.abc.com/Org/')),
    null));
    However when I want to add another criteria i.e. show me events of type merger(?x rdf:type :Merger) , the query fails with the "unknown namespace prefix error" as above
    select x event,z acquiringorg ,l acquireeorg from table(SEM_MATCH(
    '(?x rdf:type :Merger)(?x Evnt:AcquiringOrg ?y)(?k orgn:hasName ?l)',
    SEM_MODELS('test'),
    null,
    SEM_ALIASES(SEM_ALIAS('Evnt','http://www.abc.com/Event/Merger/'),
    SEM_ALIAS('orgn','http://www.abc.com/Org/')),
    null));
    specifying "rdf" ALIAS explicitly also does not work
    select x event,z acquiringorg ,l acquireeorg from table(SEM_MATCH(
    '(?x rdf:type :Merger)(?x Evnt:AcquiringOrg ?y)(?k orgn:hasName ?l)',
    SEM_MODELS('test'),
    null,
    SEM_ALIASES(_SEM_ALIAS('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'),_
    SEM_ALIAS('Evnt','http://www.abc.com/Event/Merger/'),
    SEM_ALIAS('orgn','http://www.abc.com/Org/')),
    null));
    I am unable to figure out why default namespace i.e. rdf is returning this error
    Stuck at this point badly!!Any pointers would be useful!!

    Full error details are as below
    ORA-29532: Java call terminated by uncaught Java exception: oracle.spatial.rdf.server.ParseException: Unknown namespace prefix ''
    ORA-06512: at "MDSYS.RDF_MATCH_IMPL_T", line 153
    ORA-06512: at "MDSYS.RDF_MATCH_IMPL_T", line 842
    ORA-06512: at "MDSYS.RDF_MATCH_IMPL_T", line 235
    ORA-06512: at line 1
    29532. 00000 - "Java call terminated by uncaught Java exception: %s"
    *Cause:    A Java exception or error was signaled and could not be
    resolved by the Java code.
    *Action:   Modify Java code, if this behavior is not intended.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • 500 error when using customized form

    TMG 2010 Service Pack 2    
    Server 2008 R2 Service Pack 1
    Only one member in the array
    I have enabled "Use customized HTML forms instead of the default" in a listener. That works fine, as long as I stick to the original custom folder: "ISA".
    But once I make a copy of the default folder, calling it "ISA-2" and try to use that copy, the error is
    Error Code: 500 Internal Server Error. The data area passed to a system call is too small. (122)
    As far as I can see, the copy - ISA-2 - is a perfect copy of the original - ISA. (The error message is the same as the one I get if I specify a folder that does not exist at all.)

    Hi,
    Was the copy file ISA-2 in the same folder with the original ISA custom folder? If yes, please enter "ISA-2" on the Forms tab, click appy and restart the TMG Firewall Service to apply the changes to TMG.
    Best regards,
    Susie

  • Need Help! PS CS3 have Error when using custom brushes.

    Hello Everyone,
    First, please forgive my bad english!
    My prpblem is, that Photoshop CS3 (Part of Adobe Premium Suite 3, Design Premium package) always crash when I using the brushes.
    I can use any other tool and it works great. But at the moment I use a brush for two three strokes Photoshop have an Error.
    What I did. Delete all Brushes, save new Brushes, just use original Brushes. create new Brushes, that all didn't work. PS crashes also after I did all that stuff.
    Hopefully somebody can help me, its very frustrated. Because Im a concept artist and I only need PS for painting. PS have this problem by the way
    from beginn on I installed the Premium Suite on my iMac.
    Thank's and kind regards from Zurich

    What are your performance preferences?
    Is the Brush tip extremely large?
    Boilerplate-text:
    Are Photoshop and OS fully updated?
    As with all unexplainable Photoshop-problems you might try trashing the prefs (after making sure all customized presets like Actions, Patterns, Brushes etc. have been saved and making a note of the Preferences you’ve changed) by pressing command-alt-shift on starting the program or starting from a new user-account.
    System Maintenance (repairing permissions, purging PRAM, running cron-scripts, cleaning caches, etc.) might also be beneficial, Onyx has been recommended for such tasks.
    http://www.apple.com/downloads/macosx/system_disk_utilities/onyx.html
    Weeding out bad fonts never seems to be a bad idea, either. (Validate your fonts in Font Book and remove the bad ones.)
    If 3rd party plug-ins are installed try disabling them to verify if one of those may be responsible for the problem.

  • Invalid value error when using custom lov-window

    We generate a form with Headstart(patch12.4)/Designer 6.0. In a multi-recordblock we insert a record, selected via a custom LOV form. When changing the focus to another field, immediately we get the message
    FRM-40212: Invalid value for field OMI_ONDERDEEL_ID.
    We cannot debug, because the error seems to happen before the WHEN_VALIDATE-trigger is entered. BUT:
    When we generate the form without using the custom-LOV, everything works fine! But that is not what the user wants, because then he can only search on ID,which means nothing to him. A second (also unique) column is really what he wants to select on.
    Who can help me out?? Thanks in advance,
    Paul Wiselius.

    I hope you get a reply, I have the same problem (see about three pages back)!

  • NoClassDefFound error when using custom Java package in scripting QPAC

    Hi,
    I compiled a little Java-package (.jar), which contains a class that uses
    com.adobe.workflow.datatype.form.FormDataTypeInstanceImpl.
    I put my library in the lib folder of JBoss (...\server\all\lib).
    Then I'm was trying to invoke my custom class in the scripting QPAC. But I'm constantly getting the error message
    NoClassDefFound com\adobe\workflow\datatype\form\FormDataTypeInstanceImpl. I already put
    adobe-wkf.jar (and various others) in the lib folder of JBoss. Without ever succeeding. Unfortunately.
    I'm going mad about this.
    Is there a way to address a custom package in the scripting QPAC, which uses
    FormDataTypeInstanceImpl?
    Steve

    Removing the LiceCycle jars from the lib folder did not work. I still get the same error message.
    What I wanted to do is provide some basic utilities, without having to spend a lot of time designing QPAC user interfaces.
    My utility class contains methods like this one:
    @param 
    pFormData
    @return
    @throws 
    ParserConfigurationException
    @throws 
    SAXException
    @throws 
    IOException
    public static 
    org.w3c.dom.Document formToXml
    FormDataTypeInstanceImpl pFormData
    throws 
    ParserConfigurationException, SAXException, IOException 
    byte
    data = pFormData.getXFAData
    InputStream objXMLInputStream = 
    new 
    ByteArrayInputStream
    data
    // create new Document object
    DocumentBuilderFactory objFactory = DocumentBuilderFactory.newInstance
    DocumentBuilder objBuilder = objFactory.newDocumentBuilder
    org.w3c.dom.Document objDocument = objBuilder.parse
    objXMLInputStream
    return 
    objDocument;
    Even without ever invoking the aforementioned method, I get the error
    NoClassDefFound: FormDataTypeInstanceImpl. Which is pretty weird.
    Do I have to write my own classloader?
    Steve

  • '...' not appearing in obscured table cell when using custom renderer.

    Hello all -
    I am using a custom JPanel as a cell renderer in a JTable to display two icons per cell. Unfortunately, I am running into a problem that occurs when resizing a column such that the width of the column is less than the size of the cell content. Normally, when resizing a cell in this manner, it will start to cut off the text within the cell and add '...' to signify that some material is obscured. However, using my cell renderer, the text simply cuts off with no indication whatsoever there is more content that is being hidden. I have tried looking through the JComponent code to find a function to overload but I haven't had much luck. Does anyone have any suggestions?
    For a simple example, compile and run the following code and try resizing the two columns. You should be able to notice the difference.
    Thanks,
    - Alex
    import java.awt.*;
    import java.awt.image.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.table.*;
    public class TwoIcons extends JFrame {
         public static void main(String[] args){
              createIcons();
              SwingUtilities.invokeLater
                   new Runnable()
                        public void run() {
                             new TwoIcons();
         public TwoIcons(){
              super("Test");
              DefaultTableModel tm = new DefaultTableModel(
                   new Object[][]{
                        {new IconPair("cross", "cross"), "just a string"},
                        {new IconPair("circle", "cross"),"just another string"},
                        {new IconPair("String", "circle"),"yet another string"}
                   }, new String[]{"Two Icons","String"}){
                   public Class getColumnClass(int columnIndex){
                        if(columnIndex==0){
                             return IconPair.class;
                        else
                             return super.getColumnClass(columnIndex);
              JTable table = new JTable(tm);
              final Color bg = table.getBackground();
              table.setDefaultRenderer(IconPair.class, new TableCellRenderer(){
                        RendererPanel renderer = new RendererPanel(bg);
                        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                             renderer.setIcons((IconPair)value);
                             return  renderer;
              JScrollPane scp = new JScrollPane(table);
              add(scp);
              setSize(400,100);
              setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              pack();
              setVisible(true);
         class RendererPanel extends JPanel{
              JLabel icon1, icon2;
              RendererPanel(Color bg){
                   setLayout(new BoxLayout(this,BoxLayout.LINE_AXIS) );
                   icon1=new JLabel();
                   icon2=new JLabel();
                   add(icon1);
                   add(icon2);
                   setBackground(bg);
              public void setIcons(IconPair value) {
                   icon1.setIcon(value.i1);
                   icon1.setToolTipText("Icon 1");
                   icon2.setIcon(value.i2);
                   icon2.setToolTipText("Icon 2");
                   //uncomment next 2 lines if you want text as well
                   icon1.setText(value.s1);
                   icon2.setText(value.s2);
         class IconPair {
              public Icon i1,i2;
              public String s1,s2;
              IconPair(String s1, String s2){
                   this.i1=(Icon)icons.get(s1);
                   this.i2=(Icon)icons.get(s2);
                   this.s1=s1;
                   this.s2=s2;
         static Map icons = new HashMap();
         public static  void createIcons(){
              Image img = new BufferedImage(10,10, BufferedImage.TYPE_INT_ARGB);
              Graphics2D g2=(Graphics2D)(img.getGraphics());
              g2.setColor(Color.BLUE);
              g2.drawLine(0,0,10,10);
              g2.drawLine(0,10,10,0);
              icons.put("cross",new ImageIcon(img));
              img = new BufferedImage(10,10, BufferedImage.TYPE_INT_ARGB);
              g2=(Graphics2D)(img.getGraphics());
              g2.setColor(Color.ORANGE);
              g2.drawOval(1,1,8,8);
              icons.put("circle",new ImageIcon(img));
    }

    Things aren't resizable in your layout for the custom renderer. Here's your code working as you want (I think)
    import java.awt.*;
    import java.awt.image.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.table.*;
    public class TwoIcons extends JFrame {
         public static void main(String[] args){
              createIcons();
              SwingUtilities.invokeLater
                   new Runnable()
                        public void run() {
                             new TwoIcons();
         public TwoIcons(){
              super("Test");
              DefaultTableModel tm = new DefaultTableModel(
                   new Object[][]{
                        {new IconPair("cross", "cross"), "just a string"},
                        {new IconPair("circle", "cross"),"just another string"},
                        {new IconPair("String", "circle"),"yet another string"}
                   }, new String[]{"Two Icons","String"}){
                   public Class getColumnClass(int columnIndex){
                        if(columnIndex==0){
                             return IconPair.class;
                        else
                             return super.getColumnClass(columnIndex);
              JTable table = new JTable(tm);
              final Color bg = table.getBackground();
              table.setDefaultRenderer(IconPair.class, new TableCellRenderer(){
                        RendererPanel renderer = new RendererPanel(bg);
                        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                             renderer.setIcons((IconPair)value);
                             return  renderer;
              JScrollPane scp = new JScrollPane(table);
              getContentPane().add(scp);
              setSize(400,100);
              setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              pack();
              setVisible(true);
         class RendererPanel extends JPanel{
              JLabel icon1, icon2;
              RendererPanel(Color bg){
                   setLayout(new BoxLayout(this,BoxLayout.LINE_AXIS) );
                   icon1=new JLabel();
                   icon2=new JLabel();
                   add(icon1);
                   add(icon2);
                   icon1.setMinimumSize(new Dimension(0, 0));
                   icon2.setMinimumSize(new Dimension(0, 0));
                   icon1.setMaximumSize(new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
                   icon2.setMaximumSize(new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
                   setBackground(bg);
              public void setIcons(IconPair value) {
                   icon1.setIcon(value.i1);
                   icon1.setToolTipText("Icon 1");
                   icon2.setIcon(value.i2);
                   icon2.setToolTipText("Icon 2");
                   //uncomment next 2 lines if you want text as well
                   icon1.setText(value.s1);
                   icon2.setText(value.s2);
         class IconPair {
              public Icon i1,i2;
              public String s1,s2;
              IconPair(String s1, String s2){
                   this.i1=(Icon)icons.get(s1);
                   this.i2=(Icon)icons.get(s2);
                   this.s1=s1;
                   this.s2=s2;
         static Map icons = new HashMap();
         public static  void createIcons(){
              Image img = new BufferedImage(10,10, BufferedImage.TYPE_INT_ARGB);
              Graphics2D g2=(Graphics2D)(img.getGraphics());
              g2.setColor(Color.BLUE);
              g2.drawLine(0,0,10,10);
              g2.drawLine(0,10,10,0);
              icons.put("cross",new ImageIcon(img));
              img = new BufferedImage(10,10, BufferedImage.TYPE_INT_ARGB);
              g2=(Graphics2D)(img.getGraphics());
              g2.setColor(Color.ORANGE);
              g2.drawOval(1,1,8,8);
              icons.put("circle",new ImageIcon(img));
    }Note that the ... is a function of the JLabel when it is too small to render its text.

  • Using JScrollpane via Custom Cell Renderer.Please Help

    Chaps,
    I have a question regarding scrolling of a JList.
    I have written a class (FTRDList) that has an Custom Cell Renderer.
    I want the list to be scrollable.
    This class is being called by many other classes.
    Now,as the FTRDList class is being called by many classes,i need
    to have all these classes to have the flwg statement
    add(new JScrollPane(FTRDList)),BorderLayout.CENTER);
    This can be a lot of work to chaneg all classes
    Rather,is it possible to have the JScrollPane built in the
    FTRDList class once and for all and let all classes call
    it by
    add(FTRDList,BorderLayout.CENTER);
    Please can anyone tell me how to make the FTRDList class Scrollable?
    Or is this not possible at all?
    Attached is the class:
    public class FTRDList extends JList {
        /* Inner class for Custom Cell Renderer */
        class MyCellRenderer extends JLabel implements ListCellRenderer {
        public Component getListCellRendererComponent(JList list,
                                                      Object value,            // value to display
                                                      int index,               // cell index
                                                      boolean isSelected,      // is the cell selected
                                                      boolean cellHasFocus) {  // the list and the cell have the focus
                setText(value.toString());
                if (isSelected) {
                setBackground(isSelected ? Color.red : Color.yellow);
             setForeground(isSelected ? Color.white : Color.black);
                setEnabled(list.isEnabled());
                setOpaque(isSelected);
                return this;
        public FTRDList() {
            super();
            setSelectedIndex(0);
            /** Invoke the cell Renderer */
            setCellRenderer(new MyCellRenderer());
            setOpaque(false);    

    I HAVE ALSO POSTED THIS IN THE JAVA PROGRAMMING FORUM PLEASE DONT GET OFFENDED AS I AM EXPECTING AN URGENT RESPONSEWell, someone has probably already answered this question in the Java forum, so I won't waste my time and answer it again here.

  • JTree custom cell renderer question

    When using a custom cell renderer is their anyway to tell the offset of the current node?
    For example if you have a tree with the parent node "Parent" that has a few children nodes it will look something like this:
    Parent
    |----Child 1
    |----Child 2
    |----Child 3
    So the parent would have an offset of zero. I want to know how to get the childrens offset? If this is possible?
    What I am trying to accomplish:
    I have a JTree as a scrollpane rowHeader. While the main body of the scrollpane is a JTable. I need the tree's nodes to fill the entire width so that it looks like part of the table. I figure the row header width - current node offset should be the width that I will need each node to be. Any help is welcome. Thanks.

    the renderer tells you the row, the tree can get you a treepath for a row
    TreePath getPathForRow(int row)
    That can tell you the depth of the node.

  • Custom Cell Renderer for JList

    I'm getting some strange behaviour from my custom cell renderer.
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.border.*;
    public class TestRenderer implements ListCellRenderer {
      private JPanel jpCell = new JPanel();
      public Component getListCellRendererComponent
          (JList list, Object value, int index, boolean isSelected,
           boolean cellHasFocus) {
        jpCell.add(new JLabel("Render"));
        return jpCell;
    import javax.swing.*;
    import java.awt.*;
    public class TestPanel extends JFrame {
         public TestPanel() {
              JList jlst = new JList(new String[]{"Value", "Value2", "Value3"});
              jlst.setCellRenderer(new TestRenderer());
              JPanel panel = new JPanel();
              panel.add(jlst);
              add(panel);
         public static void main(String[] args) {
              TestPanel frame = new TestPanel();
              frame.setSize(300, 300);
              frame.setLocationRelativeTo(null);
              frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
              frame.setVisible(true);
    }As you will see the renderer displays the string several times in each cell depending on which layout manager I use. However, if I replace the JPanel with a JLabel and set the String as text on the label the String is only printed once per cell. I can't see to find the reason for this.
    Edited by: 811488 on 18-Nov-2010 09:44
    Edited by: 811488 on 18-Nov-2010 09:45
    Edited by: 811488 on 18-Nov-2010 09:45

    So getListCellRendererComponent returns a component whose paintComponent method is called with the Graphics object of the JList Yes, except that the paint(...) method is called. There is a difference. paintComponent() only paints the component. In the case of a JPanel you would get a boring gray colored component. paint() will paint the component and its children and the Border of the component as well. So you get a much more exiting component.
    Read the section from the Swng tutorial on [url http://download.oracle.com/javase/tutorial/uiswing/painting/index.html]Custom Painting for more information.
    So the state of the cell is not the state of the cell Renderer Component meaning the image rendered onto the cell only reflects the state of the Cell Renderer Component at the time the cell was rendered.Yes which is why this method should be efficient because repainting is consistently being done for all the cells. For example every time row selection changes multiple rows need to be repainted. Think of this same concept when you use a JTable which also contains multiple columns for each row.
    That is why you should not be adding/removing components in the rendering code.
    It makes sense except that if this was the case the first version of the Render that I posted should have been rendered first with one "Render" then two then three, shouldn't it?Yes, except that you can't control when or how often the rendering is done. Add the following to the renderer:
    System.out.println(index + " : " + jpCell.getComponentCount());You will see that rendering is done multiple times. The JList tries to determine its preferred width. To do this it loops through all the items in the list and invokes the renderer to get the width of the largest renderer. Well the largest width is the last renderer because 3 labels have been added to the panel. So that width becomes the preferred width of the list. Then the GUI is displayed and the list is painted. Every time the renderer is called an new label is added, but after the 3rd label there is no room to paint the label so it is truncated.
    Change your code to the following:
    //add(panel);
    add(jlst);Now change the width of the frame to see what happens.
    Given all the help you have received, I expect to see many "helpfull answers" selected as well as a "correct answer" (if you want help in the future that is).

  • Custom Cell Renderer / Video garbage on "refresh"

    I have created a custom Cell Renderer for my JTable. When the application in which this JTable is displayed, is moved into the background and then brought back "front", The application does not redraw itself completely.
    I am able to see the information contained in the JTable but none of the surrounding components. When I do a mouse click on any of the background of the surrounding panel, nothing happens.
    In order to get the entire Panel/View/all visible components to refresh themselves, I have to click on aother component (example would be switching to a different panel of the tabbed pane.)
    This only happens when I have a JTable with this particular Renderer showing. Any other panel or JTable not using this Renderer refreshes completely.
    Here is my Cell Renderer most of which I borrowed extensively from info posted in these forums:
    import java.util.*;
    import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.border.*;
    import java.awt.*;
    import java.io.*;
    * This is a much lighter version of the multiline renderer.  It does need to have newline
    * characters at the points where the next line should occur.
    public class CTAuditTableCellRenderer extends JList implements TableCellRenderer {
        public CTAuditTableCellRenderer() {
            setOpaque(true);
            ListCellRenderer renderer = getCellRenderer();
            ((JLabel)renderer).setHorizontalAlignment(JLabel.CENTER);
            setCellRenderer(renderer);
        *   getTableCellRendererComponent() is the only method that must be over-ridden.
        *   @param table the JTable holding cell we wish to render
        *   @param value the object which we wish to put into the cell
        *   @param isSelected boolean to allow selected cell to appear as such
        *   @param hasFocus boolean to alert as to the cell having focus
        *   @param row row of the JTable in which cell resides
        *   @param column column of the JTable in which the cell resides.
        *   @return Component the image of the value object.  Not a true object but an
        *   image of the object.
        public Component getTableCellRendererComponent(JTable table, Object value,
                                    boolean isSelected, boolean hasFocus, int row, int column) {
            if (isSelected) {
                setForeground(table.getSelectionForeground());
                setBackground(table.getSelectionBackground());
            } else {
                setForeground(table.getForeground());
                setBackground(table.getBackground());
            setFont(table.getFont());
            if (hasFocus) {
                setBorder( UIManager.getBorder("Table.focusCellHighlightBorder") );
                if (table.isCellEditable(row, column)) {
                    setForeground( UIManager.getColor("Table.focusCellForeground") );
                    setBackground( UIManager.getColor("Table.focusCellBackground") );
            } else {
                setBorder(new EmptyBorder(1, 2, 1, 2));
            String str = (value == null) ? "" : value.toString();
            BufferedReader br = new BufferedReader(new StringReader(str));
            String line;
            Vector v = new Vector();
            try {
                while ((line = br.readLine()) != null) {
                    v.addElement(line);
            } catch (IOException ex) { ex.printStackTrace(); }
            setListData(v);
            if(v.size() > 1){
                table.setRowHeight(row, (table.getRowHeight()+ 3)* v.size());
            return this;
    }Thank you in advance for your constructive, insightful, and applicable replies.
    Jerry

    Here is an entire example that shows the situation of the Frame (in this case) not updating/refreshing all of it's components when regaining focus.
    To simulate the problem, simply move "something"/another window over the sample frame and then move it off. In my case the scrollbar and the headers do not reappear until I have selected a row and scrolled the table.
    Here is the example code:
    import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.border.*;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    public class MultiLineCellExample extends JFrame {
      MultiLineCellExample() {
        super( "Multi-Line Cell Example" );
        DefaultTableModel dm = new DefaultTableModel() {
          public Class getColumnClass(int columnIndex) {
            return String.class;
        dm.setDataVector(new Object[][]{{"aa aa aa aa aa\naa aa aa aa aa\naa aa aa aa aa","b","c"},
                                        {"A","B","C\nC"},{"x","y","z"}},
                         new Object[]{"1","2","3"});
        JTable table = new JTable( dm );
        table.setDefaultRenderer(String.class, new MultiLineCellRenderer());
        JScrollPane scroll = new JScrollPane( table );
        getContentPane().add( scroll );
        setSize( 400, 130 );
        setVisible(true);
      public static void main(String[] args) {
        MultiLineCellExample frame = new MultiLineCellExample();
        frame.addWindowListener( new WindowAdapter() {
          public void windowClosing( WindowEvent e ) {
            System.exit(0);
    }And here is the Renderer code:
    import java.util.*;
    import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.border.*;
    import java.awt.*;
    import java.io.*;
    public class MultiLineCellRenderer extends JList implements TableCellRenderer {
        public MultiLineCellRenderer() {
            setOpaque(true);
            ListCellRenderer renderer = getCellRenderer();
            ((JLabel)renderer).setHorizontalAlignment(JLabel.CENTER);
            setCellRenderer(renderer);
        public Component getTableCellRendererComponent(JTable table, Object value,
                                    boolean isSelected, boolean hasFocus, int row, int column) {
            if (isSelected) {
                setForeground(table.getSelectionForeground());
                setBackground(table.getSelectionBackground());
            } else {
                setForeground(table.getForeground());
                setBackground(table.getBackground());
            setFont(table.getFont());
            if (hasFocus) {
                setBorder( UIManager.getBorder("Table.focusCellHighlightBorder") );
                if (table.isCellEditable(row, column)) {
                    setForeground( UIManager.getColor("Table.focusCellForeground") );
                    setBackground( UIManager.getColor("Table.focusCellBackground") );
            } else {
                setBorder(new EmptyBorder(0, 0, 0, 0));
            String str = (value == null) ? "" : value.toString();
            BufferedReader br = new BufferedReader(new StringReader(str));
            String line;
            Vector v = new Vector();
            try {
                while ((line = br.readLine()) != null) {
                    v.addElement(line);
            } catch (IOException ex) { ex.printStackTrace(); }
            setListData(v);
            if(v.size() > 1){
                table.setRowHeight(row, (table.getRowHeight()+2)* v.size());
            return this;
    }Please, this is a very annoying problem and I would appreciate help in solving.
    Jerry

  • Error when using PPR in the OA page developed.

    HI,
    We are encountering an error when using PPR for the custom OA page being developed. I am using JDeveloper version 9.0.3.5(Build 1437) and Oracle Applications version 11.5.10.CU2. The scenario we are using PPR and the steps to reproduce the issue is mentioned below,
    Scenario:
    1) PPR is enabled for a custom OA page that is developed.
    2) The PPR is being used to enable or disable a particular field based on the
    selection of a value in a poplist in the same OA Page.
    Error replication steps:
    1) The user enters a value in the primary mandatory field which has to have
    unique value.
    2) The user selects a value from the poplist of a field which has PPR associated.
    3) The user enters data in all other mandatory fields in the OA page except one
    and tries to save the form and is shown a error message saying that all
    mandatory fields are not entered(This is correct). Now the page gets
    automatically refreshed and so the entered values are wiped off.
    4) Now if the user again enters a value in the primary mandatory field (as in
    step1) and if that value happens to be already existing value and then select
    a value from the poplist which has PPR enabled then immediately the error
    "Please enter a unique value" is entered, though we did not save the record.
    The unique record validation would happen only at the time of saving the
    record as per out business logic.
    5) But if in Step 4 if i had entered a unique value again then the above said error
    does not happen. There are few more similar kind of issues happening in the
    same page because PPR is enabled.
    Please note that this issue happens only when the page is deployed in a oracle
    applications instance and not in JDeveloper.
    Would this issue because of some cacheing problem? If Yes then how do we resolve it? Or would it be some other problem caused by our internal coding.
    Any inputs for resolving this issue would be highly appreciated.
    Thanks, Raja.

    What works in Jdeveloper should work when deployed in iAS as well.
    And PPR is an old feature given quite enough time to mature, so before we suspect OA we should investigate the code. What I do not understand is how the page refreshes in Step 3 and why does the user have to re-enter the fields just because he missed entering one mandatory field the last time.
    Mandatory field validations are client validations set by making the fields 'Required'. You obviously have client validations turned off on your PPR, otherwise you would be stuck with a javascript popup on PPR. The only way you can get the "Please enter unique..." error on PPR is Server Validation. So where have you placed this validation? If it is not in the EO, is it in the AM? And are you unconditionally calling the AM validation method in your processFormRequest? The PPR will also go through processFormRequest so I hope the PPR event is in a different if-else block.

Maybe you are looking for

  • Multiple relationship for the same field

    Hello ! I have this situation : Table : Article Id name category Table : Services id name nr value Table : Sell_item Id item_id quantity price value Now the problem is this : The field Item_id on the sell_item table can be the id for  an Article or a

  • Interactive Booklet Question

    I bought a yellowcard - lights and sounds interactive booklet from itunes but when I view it I can only get it in the area where album art usually is and when I stretch the side bar the font and everything is still very small. How do I use an interac

  • Cisco Prime Infrastructure 1.2 with Cisco Prime Network Control System Hardware Appliance

    Hi Team, I have  following BOM Cisco Prime Infrastructure R-PI-1.2-K9 Cisco Prime Infrastructure 1.2 1 R-PI-1.1-500-K9 Prime Infrastructure 1.2 Software - 500 Device Base Lic 1 L-PILMS42-500 Prime Infrastructure LMS 4.2 - 500 Device Base Lic 1 L-PINC

  • Forte and Crystal OCX

    Using Crystal Reports 6.0 ActiveX control on Win 95 clients or Win 95 development machines I cannot insert the object into the ActiveX widget. In distributed mode the Control cannot be 'Realized' and in development, the Win 95 machine hangs up. Compl

  • Lightroom and Audio Files

    Does anyone know if Lightroom will play audio files, like PhotoMechanic? Thanks!