Java - 从JTable填充JTextFields(错误)

时间:2012-04-12 19:52:30

标签: java swing jtable jtextfield

我有各种类别代表各种类型的节目类型(喜剧,戏剧等)。

我有一个文本文件,其中填充了' - '分隔值,这些值由名为处理的类读取,并将它们放入LinkedList。

我有另一个创建GUI的类 GUI_g 。它有3个JTable。一个用于列表,一个用于每个Channel。 (频道1和频道2)。 JTable listTable从链表中填充,每当用户点击一行时,文本字段的文本都会相应地更改。

我尝试了3个字段(标题,类型和持续时间)并且它有效,3个文本字段根据单击的行显示不同的文本。但是,当我添加所有需要的值时,会出现错误并且不填充任何字段。当我在 ProgramTableModel case 中添加更多值时发生了此错误,但我看不出有什么问题。

以下是课程(主要使用的课程)。如果你需要别人告诉我,我会上传。

这是我得到的错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at GUI_g$1.mouseClicked(GUI_g.java:160)

List

这是我收到错误的部分:

JTable mouseListener:

 listTable.addMouseListener(new MouseAdapter() {
                 public void mouseClicked(MouseEvent e) {
                    if (e.getClickCount() == 1) {
                  JTable target = (JTable)e.getSource();
                  int row = target.getSelectedRow();
                  int column = target.getSelectedColumn();

                  String title = listTable.getValueAt(row, column).toString();
                  String duration = listTable.getValueAt(row, column+1).toString();
                  String genre = listTable.getValueAt(row, column+2).toString();
                  String actor = listTable.getValueAt(row, column+3).toString();
                  String director = listTable.getValueAt(row, column+4).toString();
                  String rentable = listTable.getValueAt(row, column+5).toString();
                  String synopsis = listTable.getValueAt(row, column+6).toString();

                  txtTitle.setText(title);
                  txtDuration.setText(duration);
                  txtGenre.setText(genre);
                  txtActor.setText(actor);
                  txtDirector.setText(director);

                  if (synopsis == " ") {

                      txtSynopsis.setText("N/A");

                  }

                  txtSynopsis.setText(synopsis);

                  if (rentable == "false") {

                      rentCB.setEnabled(false);

                  }

                  else {
                      rentCB.setEnabled(true);

                  }


                }
                  }
                });

出于某种原因,概要没有在JTable中表示:

import java.util.List;

import javax.swing.table.AbstractTableModel;


public class ProgramTableModel extends AbstractTableModel
{
    private List<Program> schedule;

    public ProgramTableModel(List<Program> schedule)
    {
        this.schedule= schedule;
    }


    public int getColumnCount() 
    {
        return 7;
    }


    public int getRowCount() 
    {
        return schedule.size();
    }


    public Object getValueAt(int rowIndex, int columnIndex) 
    {
        Program sData = schedule.get(rowIndex);

        switch (columnIndex)
        {
        case 0: return sData.getTitle();
        case 1: return sData.getDuration();
                case 2: return sData.getCategory();
                case 3: return sData.getActor();
                case 4: return sData.getDirector();
                case 5: return sData.getRentable();
                case 6: return sData.getSynopsis();
                default: return "Not Available.";
        }

    }



}

调试器特别指出第162行是问题所在。即:

String synopsis = listTable.getValueAt(row, column+6).toString();

这是整个项目的链接:http://www.mediafire.com/?0vjdw2t6762226t

0 个答案:

没有答案