渲染器编辑器给出错误

时间:2014-08-28 11:57:39

标签: java swing tablecellrenderer tablemodel tablecelleditor

我正在尝试使用here的简单渲染器编辑器,但我的NetBeans IDE正在抱怨代码中的错误。有人可以帮助我。

以下是代码。

  public class CellEditor {

  public static void main(String[] argv) {
   DefaultTableModel model = new DefaultTableModel() {
     public Class getColumnClass(int columnIndex) {
      Object o = getValueAt(0, columnIndex);
       if (o == null) {
         return Object.class;
       } else {
        return o.getClass();
      }
     }
   };
  JTable table = new JTable(model);

  model.addColumn("Boolean", new Object[] { Boolean.TRUE });
 model.addColumn("Date", new Object[] { new Date() });
 model.addColumn("Double", new Object[] { new Double(Math.PI) });
 model.addColumn("Float", new Object[] { new Float(1.2) });
 model.addColumn("Icon", new Object[] { new ImageIcon("icon.gif") });
 model.addColumn("Number", new Object[] { new Integer(1) });
 model.addColumn("Object", new Object[] { "object" });

  Enumeration e = table.getColumnModel().getColumns();
   TableColumn col = (TableColumn) e.nextElement();

    col.setCellRenderer(table.getDefaultRenderer(Boolean.class)); //IDE complains cannot find 
      method setCellRenderer
    col.setCellEditor(table.getDefaultEditor(Boolean.class));   // IDE complains cannot find 
      method setCellEditor

  JFrame f = new JFrame();
  f.setSize(300,300);
  f.add(new JScrollPane(table));
  f.setVisible(true);
   }
 }

感谢所有人。

2 个答案:

答案 0 :(得分:4)

TableColumn是一类JavaFX以及swing。检查您是否正在使用swing导入

import javafx.scene.control.TableColumn;

import javax.swing.table.TableColumn;

提示: 使用<alt><enter>让IDE自动查找导入。

将光标放在col.后面,以找到该类的方法。您也可以在<ctl><space>

之后用光标按col.

答案 1 :(得分:3)

您的代码看起来不错,应该编译。猜测:你有自己的名为TableColumn的类吗?如果是这样,它将影响Java核心类TableColumn并阻止您的代码编译。如果是这样,请将您的类重命名为不与核心Java类名冲突的其他内容。

另外,根据我的评论,显示您的进口,因为它们可能会影响您的问题。


顺便说一句,这里的代码格式正确。请注意,它更容易阅读,因为您准确了解方法和块的开始和结束位置:

import java.util.Date;
import java.util.Enumeration;
import javax.swing.*;
import javax.swing.table.*;

public class CellEditor {

   public static void main(String[] argv) {
      DefaultTableModel model = new DefaultTableModel() {
         public Class getColumnClass(int columnIndex) {
            Object o = getValueAt(0, columnIndex);
            if (o == null) {
               return Object.class;
            } else {
               return o.getClass();
            }
         }
      };
      JTable table = new JTable(model);

      model.addColumn("Boolean", new Object[] { Boolean.TRUE });
      model.addColumn("Date", new Object[] { new Date() });
      model.addColumn("Double", new Object[] { new Double(Math.PI) });
      model.addColumn("Float", new Object[] { new Float(1.2) });
      model.addColumn("Icon", new Object[] { new ImageIcon("icon.gif") });
      model.addColumn("Number", new Object[] { new Integer(1) });
      model.addColumn("Object", new Object[] { "object" });

      Enumeration e = table.getColumnModel().getColumns();
      TableColumn col = (TableColumn) e.nextElement();

      // IDE complains cannot find method setCellRenderer
      col.setCellRenderer(table.getDefaultRenderer(Boolean.class)); 

      // IDE complains cannot find method setCellEditor
      col.setCellEditor(table.getDefaultEditor(Boolean.class)); 

      JFrame f = new JFrame();
      f.setSize(300, 300);
      f.add(new JScrollPane(table));
      f.setVisible(true);
   }
}