2014-08-28 74 views
1

我正在尝试使用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); 
    } 
} 

谢谢大家。

+1

您的缩进不统一,使您的代码非常难以阅读。如果您将空格与制表符混合,请避免这种情况,并仅使用空格。请修复您的代码并发布完整的错误消息。 – 2014-08-28 12:00:43

+0

重要提示:显示您的进口,因为它们可能会影响您的问题。 – 2014-08-28 12:03:01

回答

4

TableColumn是一类JavaFX以及swing。检查你使用的swing进口

import javafx.scene.control.TableColumn; 

import javax.swing.table.TableColumn; 

提示: 使用<alt><enter>的IDE自动查找进口。

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

+0

也许比我的猜测更好。 1+ – 2014-08-28 12:08:05

+1

谢谢,检查并使用了错误的导入。 – CodeAngel 2014-08-28 12:15:23

+0

@CodeAngel,不客气 – CocoNess 2014-08-28 12:17:57

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); 
    } 
} 
+0

感谢格式建议。将开始采用这种风格 – CodeAngel 2014-08-28 12:16:14

+0

@CodeAngel:不客气,欢迎您找到您的问题并解决它!请注意,大多数现代IDE如Eclipse,NetBeans和IntelliJ Idea都会根据您的需要为您设置代码格式。 – 2014-08-28 12:17:08

相关问题