问题描述
代码的目标是向我的jTable添加一个对象。我有两个叫做Task和TaskUI的类。
我最初的期望是看到一个显示“有效任务详细信息”的MessageDialog,并将我的对象添加到jTable中。但是,唯一成功的事件是显示MessageDialog的程序。
我没有收到任何语法,逻辑或运行时错误消息。
我最初尝试按照循序渐进的方法通过以下视频创建待办事项列表:ToDo List in JAVA Netbeans,但我感到UI与工作代码之间没有足够的分隔。我的意思是,不能将后端“插入”适当使用所有方法的其他UI中。
请注意,我最近已经编辑了代码,但是,我需要添加addTask()方法的帮助
任务
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class Task {
private String name;
private String priority;
private String type;
private String time;
private boolean complete;
public Task(String name,String priority,String type,String time,boolean complete) {
this.name = name;
this.priority = priority;
this.type = type;
this.time = time;
this.complete = complete;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPriority() {
return priority;
}
public void setPriority(String priority) {
this.priority = priority;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public boolean isComplete() {
return complete;
}
public void setComplete(boolean complete) {
this.complete = complete;
}
public class TaskTableModel extends AbstractTableModel {
private String[] columnNames = {"Task","Priority","Type","Estimated Time","Status"};
private List<Task> tasks;
public TaskTableModel() {
tasks = new ArrayList<Task>();
}
public TaskTableModel(List<Task> tasks) {
this.tasks = tasks;
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public String getColumnName(int column) {
return columnNames[column];
}
@Override
public int getRowCount() {
return tasks.size();
}
@Override
public Class getColumnClass(int column) {
switch (column) {
case 4: return boolean.class;
default: return String.class;
}
}
@Override
public boolean isCellEditable(int row,int column) {
switch (column) {
case 4: return true;
default: return false;
}
}
@Override
public Object getValueAt(int row,int column) {
Task task = getTask(row);
switch (column) {
case 0: return task.getName();
case 1: return task.getPriority();
case 2: return task.getType();
case 3: return task.getTime();
case 4: return task.isComplete();
default: return null;
}
}
@Override
public void setValueAt(Object value,int row,int column) {
Task task = getTask(row);
switch (column) {
case 0: task.setName((String)value);
break;
case 1: task.setPriority((String)value);
break;
case 2: task.setType((String)value);
break;
case 3: task.setTime((String)value);
break;
case 4: task.setComplete((boolean)value);
break;
}
fireTableCellUpdated(row,column);
}
public Task getTask(int row) {
return tasks.get(row);
}
public void addTask(Task task) {
insertTask(getRowCount(),task);
}
public void insertTask(int row,Task task) {
tasks.add(row,task);
fireTableRowsInserted(row,row);
}
public void removeTask(int row) {
tasks.remove(row);
fireTableRowsDeleted(row,row);
}
}//end TaskTableModel
@Override
public String toString() {
return "Task{" + "name=" + name + ",priority=" + priority + ",type=" + type + ",time=" + time + ",complete=" + complete + '}';
}
}//end Task
TaskUI
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
public class TaskUI extends javax.swing.JFrame {
boolean validTask;
Task obj;
DefaultTableModel model = new DefaultTableModel();
/**
* Creates new form TaskUI
*/
public TaskUI() {
initComponents();
}
private void btnMakeObjectActionPerformed(java.awt.event.ActionEvent evt) {
String name = txfTask.getText();
String priority = (String) cmbPriority.getSelectedItem();
String type = (String) cmbType.getSelectedItem();
String time = txfTime.getText();
boolean complete = false;
if(txfTask.getText().length() > 0 && cmbPriority.getSelectedItem() != "--" && cmbType.getSelectedItem() != "--" && txfTime.getText().length() > 0) {
JOptionPane.showMessageDialog(null,"Valid Task Details");
validTask = true;
obj = new Task (name,priority,type,time,complete);
/**The following error message appears when adding the addTask(...) method:
* cannot find symbol
* symbol: method addTask(Object[])
* location: variable model of type DefaultTableModel
*/
model.addTask(new Object[]{tblTaskInfo.getRowCount()+1,obj});
}
else {
JOptionPane.showMessageDialog(null,"Invalid Task Details");
}
}
}
这是我的用户界面的图片 enter image description here
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)