Я пытаюсь мои руки на простой редактор визуализатора от сюда, но мой IDE NetBeans жалуется на ошибки в коде. Кто-нибудь может мне помочь.
Ниже приведены коды.
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);
}
}
Спасибо всем.
TableColumn
- это класс JavaFX
а также swing
. Убедитесь, что вы используете импорт swing
import javafx.scene.control.TableColumn;
import javax.swing.table.TableColumn;
Советы. Используйте <alt><enter>
чтобы IDE автоматически находил импорт.
Поместите курсор сразу после col.
найти методы класса. Вы также можете нажать <ctl><space>
курсором после col.
Ваш код выглядит хорошо и должен компилироваться. Угадайте: у вас есть свой класс под названием 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);
}
}