MultiLineCellRenderer (TableCellRenderer) not working in 1.4

I have the following custom TableCellRenderer I use to display a multi-line cell in a JTable. The row height is suppose to adjust itself automatically so that all the text is visible. This worked perfectly fine in 1.3. In 1.3, the JTextArea was given a preferred size after setting the text, so when calling the getPreferredSize() method, I would get the dimensions of the text area needed to display the entire text. In 1.4, however, I seem to get the default preferred size (100x34) even after setting the text, so my row height is never set properly. Does anybody have any work around for this?
public class MultiLineCellRenderer extends JTextArea
  implements TableCellRenderer {
  JTable mTable;
    public MultiLineCellRenderer(JTable table) {
      super();
      mTable = table;
      setLineWrap(true);
      setWrapStyleWord(true);
      setOpaque(true);
      setEditable(false);
    public Component getTableCellRendererComponent(JTable jTable,
        Object obj, boolean isSelected, boolean hasFocus, int row,
        int column) {
      // set the text
      setText((obj == null)?"":obj.toString());
      // get the current row height
      int height = mTable.getRowHeight(row);
      System.out.println("Get Preferred Size: " + getPreferredSize());
      System.out.println("Get Size: " + getSize());
      // if the current height is insufficient, resize the row height
      if (height < this.getPreferredSize().getHeight()) {
        mTable.setRowHeight(row, (int)(getPreferredSize().getHeight()));
      return this;
}

Hi,
I am also using almost the similar code and using JDK1.3, but I am using my table in a scroll pane. Problem is that when I am using the scroll bar, sometimes the text in cells get wrapped and sometimes not.
Some changes in my code from your code are :
1. I am not extending my renderer from JTextArea, instead using a member variable of JTextArea in my renderer class and returning that after setting the text and row height from getTableCellRendererComponent() method.
2. I am not keeping table as a member variable in the class. I am setting row height of the table instance that comes in the getTableCellRendererComponent() method.
Can anyone tell me why it does not work while scrolling?
My code is something like below:
public class MultiLineCellRenderer implements TableCellRenderer {
   JTextArea myLabel;
     public MultiLineCellRenderer(JTable table) {
        myLabel = new JTextArea(); 
        myLabel.setLineWrap(true);
       myLabel.setWrapStyleWord(true);
       myLabel.setOpaque(true);
       myLabel.setEditable(false);
public Component
getTableCellRendererComponent(JTable jTable,
Object obj, boolean isSelected, boolean
boolean hasFocus, int row,
         int column) {
       // set the text
       myLable.setText((obj == null)?"":obj.toString());
       // get the current row height
       int height = jTable.getRowHeight(row);
// if the current height is different, resize the row height
if (height != myLabel.getPreferredSize().getHeight()) {
jTable.setRowHeight(row, (int)(getPreferredSize().getHeight()));
       return myLabel;

Similar Messages

  • Tablecellrenderer not working?

    Below is a simple implementation of tablecellrenderer.
    import javax.swing.*;
    import javax.swing.table.*;
    import java.awt.*;
    public class TestGUI {
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable(){
                public void run() {
                    JFrame frame=new JFrame();
                    frame.setSize(new Dimension(700,500));
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setVisible(true);
                    JPanel jp=new JPanel(new BorderLayout());
                    JTable tbDis=new JTable(new ScheduleM());
                tbDis.setTableHeader(null);
                tbDis.setDefaultRenderer(JLabel.class,new TableCellRenderer()
                    {   public Component getTableCellRendererComponent(JTable table,
                            Object value, boolean isSelected, boolean hasFocus, int row, int column)
                        {   System.out.println(value instanceof JLabel);  // ..................
                            return (JLabel)value;
                jp.add(new JScrollPane(tbDis),BorderLayout.CENTER);
                    frame.add(jp);
    class ScheduleM extends AbstractTableModel
            {   private JLabel[][] cell;
                static final int ROW=13,COL=7;
                public ScheduleM()
                {   cell=new JLabel[ROW][COL];
                    for (int i=0; i<cell.length; i++)
                    {   for (int j=0; j<cell[ i ].length; j++)
                        {   cell[ i ][j]=new JLabel("",JLabel.CENTER);
                            cell[ i ][j].setOpaque(true);
                            cell[ i ][j].setBackground(Color.RED);
                public int getRowCount()
                {   return ROW;
                public int getColumnCount()
                {   return COL;
                public Object getValueAt(int row, int column)
                {   if (row==0 && column!=0)
                    {   cell[row][column].setText("asd");
                    return cell[row][column];
            }the line with '.......' commentis simply testing whether the method is invoked. actually when being executed, it showed nothing (just blank)
    also the table outputs only string values. why the cell cannot render the JLabel? Anything wrong in the code?
    Thanks in advance
    Edited by: user13674136 on 9/01/2011 06:45

    yep but the tutorial only illustrates on a situation when the input is color
    the reason why i choose JLabel is that i want to set cells both color and text. The weird stuff is the tablecellrenderer is not working (no JLabel returns). i saw a certain example -- display a JButton in the table and i replaced all buttons with jlabel, which works perfectly. here it is
    import javax.swing.*;
    import javax.swing.table.*;
    import java.awt.*;
    import java.awt.event.*;
    class JTableButtonModel extends AbstractTableModel {
      private JLabel[][] __rows = {
          { new JLabel("Button One"), new JLabel("Button One") },
          { new JLabel("Button One"), new JLabel("Button Two") },
          { new JLabel("Button One"), new JLabel("Button Three") },
          { new JLabel("Button One"), new JLabel("Button Four") }
      private String[] __columns = { "Numbers", "Buttons" };
      public String getColumnName(int column) {
        return __columns[column];
      public int getRowCount() {
        return __rows.length;
      public int getColumnCount() {
        return __columns.length;
      public Object getValueAt(int row, int column) {
          return __rows[row][column];
      public boolean isCellEditable(int row, int column) {
        return false;
      public Class getColumnClass(int column) {
        return getValueAt(0, column).getClass();
    public final class JTableButton extends JFrame {
      private JTable __table;
      private JScrollPane __scrollPane;
      public JTableButton() {
        super("JTableButton Demo");
        TableCellRenderer defaultRenderer;
        __table = new JTable(new JTableButtonModel());
        __table.setTableHeader(null);
        __table.setDefaultRenderer(JLabel.class,
                          new TableCellRenderer(){public Component getTableCellRendererComponent(JTable table, Object value,
                                   boolean isSelected,
                                   boolean hasFocus,
                                   int row, int column)
        System.out.println("asf");return (JLabel)value;  //............
        __table.setPreferredScrollableViewportSize(new Dimension(400, 200));
        __scrollPane = new JScrollPane(__table);
        setContentPane(__scrollPane);
      public static void main(String[] args) {
        Frame frame;
        WindowListener exitListener;
        exitListener = new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
         Window window = e.getWindow();
         window.setVisible(false);
         window.dispose();
         System.exit(0);
        frame = new JTableButton();
        frame.pack();
        frame.setVisible(true);
    }codes are nearly the same. Note that the line with '....' comment is executing.
    So i am very confused what is wrong with my codes :(
    thanks for your kind reply

  • Chechbox header : deselect all not working

    folks,
    I have a jtable generated from my database. IT has 3 columns . The 3rd column has checkboxes in it. I am implementing a "CHECK ALL"
    checkbox on the header for selection and deselection of checkboxes. the below code works for selection of all boxes.. IT DOES NOT
    WORK WHEN IT IS DESELECTED ? i want to make it work for deselection also
    I call the custom table renderer from main program as follows :
    tc = table.getColumnModel().getColumn(3);
    tc.setHeaderRenderer(new CustomTableCellRenderer1(new MyItemListener(),Name));
    this is item listner in main program for checkbox "check all" present in the table header :
    class MyItemListener implements ItemListener
    public void itemStateChanged(ItemEvent e) {
    Object source = e.getSource();
    if (source instanceof AbstractButton == false) return;
    boolean checked=e.getStateChange() == ItemEvent.SELECTED;
    for(int x = 0, y = table.getRowCount(); x < y; x++)
    table.setValueAt(new Boolean(checked),x,3);
    if (e.getStateChange() == ItemEvent.DESELECTED) // dosent work
    System.out.println("deselect all"); // may b code for deselection
    this is CustomTableCellRenderer1 class below:
    package moxaclient;
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.*;
    import java.awt.event.*;
    class CustomTableCellRenderer1 extends JCheckBox
    implements TableCellRenderer, MouseListener {
    private static final long serialVersionUID = 1L;
    protected CustomTableCellRenderer1 rendererComponent;
    protected int column;
    String Name;
    private JTable table1;
    Object abc=null;
    protected boolean mousePressed = false;
    public CustomTableCellRenderer1(ItemListener itemListener,String name) {
    rendererComponent = this;
    rendererComponent.addItemListener(itemListener);
    this.Name=name;
    public Component getTableCellRendererComponent(
    JTable table, Object value,
    boolean isSelected, boolean hasFocus, int row, int column) {
    if (table != null) {
    JTableHeader header = table.getTableHeader();
    this.table1=table;
    if (header != null) {
    rendererComponent.setForeground(header.getForegrou nd());
    rendererComponent.setBackground(header.getBackgrou nd());
    rendererComponent.setFont(header.getFont());
    header.addMouseListener(rendererComponent);
    setColumn(column);
    rendererComponent.setText("Check All");
    setBorder(UIManager.getBorder("TableHeader.cellBor der"));
    return rendererComponent;
    protected void setColumn(int column) {
    this.column = column;
    public int getColumn() {
    return column;
    protected void handleClickEvent(MouseEvent e) {
    if (mousePressed) {
    mousePressed=false;
    JTableHeader header = (JTableHeader)(e.getSource());
    JTable tableView = header.getTable();
    TableColumnModel columnModel = tableView.getColumnModel();
    int viewColumn = columnModel.getColumnIndexAtX(e.getX());
    int column = tableView.convertColumnIndexToModel(viewColumn);
    if (viewColumn == this.column && e.getClickCount() == 1 && column != -1) {
    doClick();
    int row=table1.getRowCount();
    if(row!=0)
    for(int i=0;i<=row-1;i++)
    String Sensor =(String) table1.getValueAt(i, column-3); // // when checkbox selectedthis code gets all value present in table and stores in string abc
    Double Value =(Double) table1.getValueAt(i, column-2);
    String Date =(String) table1.getValueAt(i, column-1);
    abc += Sensor+"\t"+Value+"\t"+Name+"\t"+Date+"\t";
    public void mouseClicked(MouseEvent e) {
    handleClickEvent(e);
    ((JTableHeader)e.getSource()).repaint();
    public void mousePressed(MouseEvent e) {
    mousePressed = true;
    public void mouseReleased(MouseEvent e) {
    public void mouseEntered(MouseEvent e) {
    public void mouseExited(MouseEvent e) {
    plzz help.

    please add tags around the code in your posts.
    Dinud123 wrote:
    IT DOES NOT
    WORK WHEN IT IS DESELECTED ? i want to make it work for deselection alsoI don't know any user interface where I would toggle "select all" and "deselect all" via the same control. That may be for a reason.
    So my suggestion is: provide a second button for "deselect all".
    bye
    TPD                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Not work tablet UI on Prestigio 5080 PRO tablet

    I read that browser.ui.layout.tablet = "1" can fix this problem. But it not works. I can work only in pnone interface that is not good for my 8'' tablet.

    Would it be possible for you to share the problematic pdf and OS information  with us at [email protected] so that we may investigate?
    Thanks,
    Adobe Reader Team

  • Why self-defined access sequences of free goods can not work?

    Hi gurus,
    I have maintained access sequences of free goods self-defined.but when i creat the SO it does not work!
    when i used the standard access sequences ,it is OK .
    Can anybody tell me why?
    thanks in advance

    Dear Sandy,
    Go to V/N1 transaction select your self defined access sequence then go in to the accesses and fields and check all fields are activated.
    Make sure that these fields are flowing in your sales order.
    I hope this will help you,
    Regards,
    Murali.

  • Adobe bridge raw not working with windows vista in photoshop cc, why?

    adobe bridge raw not working in photoshop cc, is there a fix?

    Your sure your using photoshop cc on windows vista?
    I was under the impression that photoshop cc would not even install on windows vista.
    What version of camera raw do you have?
    In photoshop under Help>About Plugin does it list Camera Raw and if so which version is it?
    (click on the words Camera Raw to see the version)
    Camera raw doesn't work if it's a camera raw file or some other file type such as jpeg or tif?
    What camera are the camera raw files from?
    Officially camera raw 8.3 is the latest version of camera raw that will work on windows vista.

  • Adobe Bridge CS5 in windows 7 not working?

    Adobe Bridge CS5 in windows 7 not working. I was using bridge perfectly for last 2 years. It stops working since 3 days. I tried to install updates. Showing some error to install.
    Tried to install creative cloud..again some error. Error code : 82
    Could you please advice how I can fix my adobe bridge.

    https://www.youtube.com/watch?v=xDYpTOoV81Q&feature=youtu.be
    please check this video I uploaded..this is what happens when I click adobe bridge.. just blinks and go off. bridge not working on task manager

  • ADOBE CLOUD ON MY DESKTOP WILL NOT WORK. IT LOADS UP BUT NOTHING FILLS THE WINDOW

    ADOBE CLOUD ON MY DESKTOP WILL NOT WORK. IT LOADS UP BUT NOTHING FILLS THE WINDOW

    BLANK Cloud Screen http://forums.adobe.com/message/5484303 may help
    -and step by step http://forums.adobe.com/thread/1440508?tstart=0
    -and http://helpx.adobe.com/creative-cloud/kb/blank-white-screen-ccp.html

  • Partner application logoff not working

    We have a partner application registered with sso with custom login screen. The login works fine. We use the following code to logoff the partner application in logoff.jsp
    response.setHeader("Osso-Return-Url", "http://my.oracle.com" );
    response.sendError(470, "Oracle SSO");
    session.invalidate();
    but the logoff is not working properly. It is not invalidating the session and the logout http request is not going from the application server to the sso server.
    Are there any additional configurations for SSO logoff.Any help is appreciated.
    Thanks

    Hi
    The WF should also trigger if i add the Partner function in UI.If i change any Attribute the WF triggers but i dont want to change the attribute when i add the partner function.
    If i have only one event for WF that is Partner Change the WF will not trigger it for the 1st time when i save the UI. But next i come to the same saved doc and add a partner function then the Wf triggers.
    So this means that Partner change is active.
    the issue here is i need to trigger the WF on , the 1st time i save the UI, for which i wil be using Attribute Change and next time when i come back to saved doc the and add only the partner function and no changes are made to attributes the WF should again trigger.
    Thanks
    Tarmeem

  • IPhone 4 Voice Memos not working/saving

    Hi there,
    I'm having trouble with my voice memos too. Up until yesterday they were working fine and now, even though the record button works, the stop button does not and I can only pause them. Worse again is that the button to go into the menu to view all voice memos is not working so I can't play them from my iPhone and nothing new is saving to my iTunes. Please help!

    I've always had the "Include Voice Memos" option selected. I think that only pertains to syncing voice memos from iTunes to the iPhone after it has been copied to iTunes. It has to be the new OS/iTunes not communicating that new memos have been recorded. For some reason they won't sync when I want them to, and then a few syncs later they magically appear.
    By the way, I'm VERY comfortable with the iTunes and iPhone systems. I've been using iTunes for 5 years, and I've been recording class lectures with the iPhone voice memo app (and another app) for a couple years. It's not an error of not seeing that the memos were added; they don't exist in my library or music folders.
    JUST OUT OF CURIOSITY, POST WHICH FIRMWARE YOU ARE RUNNING EXACTLY!!!
    I'm on an iPhone 4, running firmware 4.0.1

  • Installed Premiere Pro CS4 but video display does not work?

    I just got my copy of CS$. After installing Premiere I found two things that seem very wrong:
    1) video display does not work, not even the little playback viewer next to improted film clips located on the project / sequence window. Audio works fine.
    2) the UI is way too slow for my big beefy system.
    My pc is a dual boot Vista-32 and XP system with 4GB of memory installed and nvidia geforce 280 graphics board with plenty of GPU power. The CS4 is installed on the Vista-32 partition. My windows XP partition on the same PC with Premiere CS2 works great and real fast.
    Any ideas how to solve this CS4 install issue?
    Ron

    I would like to thank Dan, Hunt, and Haram:
    The problem is now very clear to me. The problem only shows up with video footage imported into PP CS4 encoded with "MS Video 1" codec. So this seems to be a bug. The codec is very clearly called out and supported within various menues but video with this codec just will not play in any monitor or preview window. In addition the entire product looks horrible with respect to performance while PP CS4 trys its best to play the video. Audio will start playing after about 30 seconds. And once in awhile part of video shows up at the wrong magnification before blanking out again.
    My suggestion to the Adobe team: fix the bug and add some sample footage to the next release so new installations can test their systems with known footage.
    My PC is brand new with the following "beefy" components:
    Motherboard
    nForce 790i SLI FTW
    Features:
    3x PCI Express x16 graphics support
    PCI Express 2.0
    NVIDIA SLI-Ready (requires multiple NVIDIA GeForce GPUs)
    DDR3-2000 SLI-Ready memory w/ ERP 2.0 (requires select third party system memory)
    Overclocking tools
    NVIDIA MediaSheild w/ 9 SATA 3 Gb/sec ports
    ESA Certified
    NVIDIA DualNet and FirstPacket Ethernet technology
    Registered
    CPU: Intel Core 2 Quad Q9550
    S-Spec: SLAWQ
    Ver: E36105-001
    Product Code: BX80569Q9550
    Made in Malaysia
    Pack Date: 09/04/08
    Features:
    Freq.: 2.83 GHz
    L2 Cache: 12 MHz Cache
    FSB: 1333 MHz (MT/s)
    Core: 45nm
    Code named: Yorkfield
    Power:95W
    Socket: LGA775
    Cooling: Liquid Cooled
    NVIDIAGeForce GTX 280 SC graphics card
    Features:
    1 GB of onboard memory
    Full Microsoft DirectX 10
    NVIDIA 2-way and 3-way SLI Ready
    NVIDIA PureVideo HD technology
    NVIDIA PhysX Ready
    NVIDI CUDA technology
    PCI Express 2.0 support
    Dual-link HDCP
    OpenGL 2.1 Capaple
    Output: DVI (2 dual-link), HDTV
    Western Digital
    2 WD VelociRaptor 300 GB SATA Hard Drives configured as Raid 0
    Features:
    10,000 RPM, 3 Gb/sec transfer rate
    RAM Memory , Corsair 4 GB (2 x 2 GB) 1333 MHz DDR3
    p/n: TW3X4G1333C9DHX G
    product: CM3X2048-1333C9DHX
    Features:
    XMS3 DHX Dual-Path 'heat xchange'
    2048 x 2 MB
    1333 MHz
    Latency 9-9-9-24-2T
    1.6V ver3.2

  • Ideapad A1-07 tablet wifi-bluet​ooth does not work!

    Hello everyone. As you can see from the title on my tablet is not working wifi and bluetooth. When turning wifi tablet is reset and continues to be off and on until it forcibly turns off, and when you turn it on again, and do not touch wifi everything is normal and there are no problems with resetting. Can someone help me and give suggestion to solve this stupid problem.  I'm from Croatia and I'm bad with the English writing.

    Hi
    Welcome To Lenovo Community
    Please perform a  factory reset 
    Please ensure you have backed any important data before doing factory reset
    Hold the volume down and the power till Lenovo logo appears .
    System will boot into recover mode. Follow the instructions
    Hope This Helps
    Cheers!!!
    Important Note: If you need help, post your question in the forum, and include your system type, model number and OS. Do not post your serial number.
    Did someone help you today? Press the star on the left to thank them with Kudos!
    If you find a post helpful and it answers your question, please mark it as an "Accepted Solution"!  This will help the rest of the Community with similar issues identify the verified solution and benefit from it.
    Follow @LenovoForums on Twitter!

  • Polygonal lasso tool not working with stylus on Surface Pro 2

    Hi guys,
    I'm new here so please bare with me if I'm posting in the wrong place or don't make immediate sense.
    Hardeware / software used: surface pro 2 and I'm running photoshop CS5.
    Problem is a fairly basic one: I am trying to make basic selections using the polygonal lasso tool (using the stylus that comes with the tablet) but it simply will not work. All I get when I touch the stylus to the screen is the circle that appears then fades. If I attach the keypad and try using that then it works no problem at all.
    Does anyone have any ideas as to whether there is a particular setting that I need to switch on or off e.g. something relating to pressure sensitivity (although not sure why this would affect this particular selection tool)?
    I've searched the web and come up with nothing so far so any help is greatly appreciated!
    Thanks for your time
    Scott

    same problem on surface pro 3 !!!!
    and i think quite significant, for lot of artists using polygonal lasso a lot (including me). How come that the stupid surface cannot work properly

  • Excite PRO 3G connection not work after Android v4.3 update

    Hello,
    I live in Italy and on last Sunday (january 26th) my Excite PRO tablet (model AT10LE-A-10H) got the Android version 4.3.201121220.35.
    After restart my wifi works fine, all other app work fine, but my 3g connection doesn't work, mobile network bar is empty and it says "no service".
    My sim card is ok. I used this sim card before the system update and I didn't get any problem with Android 4.2.2.
    Please help me.
    Thank you

    >After restart my wifi works fine, all other app work fine, but my 3g connection doesn't work, mobile network bar is empty and it says "no service".
    Go to the mobile network settings and search again for the 3G network.
    I had similar problem with my Android Smartphone and my o2 provider
    I started new search, then I chosen the O2 again and then I could solve the problem.
    In case this does not work for you, recommend you to reset the tablet back to default (factory settings)

  • A2109 tablet autorotate does not work

    The autorotation on my recently purchased tablet A2109 does not work. I look in settings and the auto rotate field is not highlighted, I therefore cannot choose to turn it on.The tablet has the Android jellybean OS and I did update it but to no avail. Can anyone help?
    Thanks
    Solved!
    Go to Solution.

    Dear tdsouza
    Welcome in lenovo forums
    just a clarification , do you mean option Rotate is dimmed in setting 
    Please let me know 
    Thanks
    Alaa
    Did someone help you today? Press the star on the left to thank them with a Kudo!
    If you find a post helpful and it answers your question, please mark it as an "Accepted Solution"! This will help the rest of the Community with similar issues identify the verified solution and benefit from it.
    Follow @LenovoForums on Twitter!

Maybe you are looking for

  • Syn 8700 with desktop and laptop

    I have successfully installed and syn'd my 8700 with outlook on desktop computer. I would also like to syn with laptop but continue to get the following error: the file or database name associated with ms outlook is missing Is it possible or impossib

  • Outlook 2011 won't sync with Address Book iCal, etc.

    We recently adopted Outlook for the Mac 2011 (we used Exchange) for our platform because of Exchange compatibility issues with other applications.  Despite the clear statement in Outlook Sync Services that it will sync with Address Book and iCal, I c

  • Copy swf files over bluetooth/infrared?

    Hi Experts, For our Flash Lite 1.1 application we are wondering whether or not a Flash SWF file can be shared between phones using bluetooth or infrared. When we would provide a unique Flash Lite 1.1 SWF with hardcoded serialnumber for download, is t

  • We have some data loads from ODS to Cube (Deltas)

    Dear Experts, We can see request status green in DSO but in cube it is in yellow and not available for reporting (the request got compressed) I want to make the status to green and available for reporting but i could'nt do it as i can see some popup

  • Importing 720x576 anamorphic movies

    Hi My video camera records Standard Definition widescreen video at a resolution of 720x576 so when it is imported into iMovie it is displayed as square and sqashed in at the sides and I can not find anyway to stretch it back out to a widescreen 16:9