This week's book giveaways are in the Refactoring and Agile forums.
We're giving away four copies each of Re-engineering Legacy Software and Docker in Action and have the authors on-line!
See this thread and this one for details.
Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

DefaultTableModel and Multiple Selections.

 
Gerald Meazell
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
OK, I'm stumped.

I have a JTable. In the model, I have two columns. The first is an object and the table uses it's toString() method to determine what it displays. The second is another object and that works similarly.

When the user presses a button, I want to retrieve the object in the first column and make some changes to it. What I change depends on whether one row is selected or multiple.

When the table has only a single row selected, this works perfectly. However, if multiple rows are selected, calling getValueAt(n,0) returns the String from the object's toString() rather than the object itself. Can somebody explain this to me? My code is below. I am using NetBeans 6.8 on 64-bit Java 6 on a Mac.

When one row selected:



When multiple rows are selected:



In the first case, t is an instance of Territory. In the second, t is an instance of String and a ClassCastException is thrown.

 
Paul Clapham
Sheriff
Pie
Posts: 20758
30
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You're going to have to look at the code of your table model to see why it's doing what it's doing. Just showing us code which calls methods of the table model isn't helpful.
 
Rob Spoor
Sheriff
Pie
Posts: 20495
54
Chrome Eclipse IDE Java Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Have you by any chance edited some of the columns? If your model says the column class is Object.class and you haven't defined a table cell renderer yourself for that column then the default is used, and that will simply put Strings into the model.
 
Gerald Meazell
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Paul Clapham wrote:You're going to have to look at the code of your table model to see why it's doing what it's doing. Just showing us code which calls methods of the table model isn't helpful.


I am using the DefaultTableModel class from the JDK.
 
Gerald Meazell
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Rob Prime wrote:Have you by any chance edited some of the columns? If your model says the column class is Object.class and you haven't defined a table cell renderer yourself for that column then the default is used, and that will simply put Strings into the model.


Interesting idea, but why would it behave one way when it's a single select and a completely different way when multiple?
 
pete stein
Bartender
Posts: 1561
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Gerald Meazell wrote:
Paul Clapham wrote:You're going to have to look at the code of your table model to see why it's doing what it's doing. Just showing us code which calls methods of the table model isn't helpful.


I am using the DefaultTableModel class from the JDK.


It works fine for me. My SSCCE:



I suggest that if you're still having a problem, you produce an SSCCE so that we can test your code and isolate your problem. Else, we'll probably not be able to help you.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic