i wan to make a JTable with JRadioButon such that one or two cells will not have any JRadio Button depending upon value I get from Database. When same code is run with Metal look and feel it works..but with Nimbus it does not.. If getValueAt() method returns null I get NullPointerException... I tried to change the code..(basic code i got after googling)
Please see the code:
when I run this code I get NullPointerException if return(Object)new JRadioButton("NoData"); is removed from method public Object getValueAt(int row, int col). The NullPointerException is removed by adding line return(Object)new JRadioButton("NoData"); in the code but it makes a JRadioButton in the table with lable No data..What I want is the cellshould not have any value at all..
I changed the code of public Object getValueAt(int row, int col). to
where useLessobj is an object created earlier..But it gives me ClassCastException in
public Component getTableCellRendererComponent(
JTable table, Object value,boolean isSelected, boolean hasFocus, int row, int column)
if (value==null) return null;
I tried returning a JLable from getTableCellRendererComponent method but again ClassCastException is what i get.
You have simply mixed up several things. A table has three things:
1) A table model:
This contains the data of the table. Data would usually be a String/Integer or your custom object.
You have added a JRadioButton itself to the model. This is wrong.
This helps you to display the model (data). In the getTableCellRendererComponent method, you have to return a component. In your case, if the value (which comes from the model) is null, then you have create a JLabel, set an empty text and return it. Otherwise, create the radio button and return it.
This is the component that handles editing when the cell is clicked on. Here, you are extending DefaultCellEditor (which is a JTexField), then you pass a JCheckBox to the constructor of this editor, and finally you return a JRadioButton from the getTableCellEditorComponent method. This is total confusion.