Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法对同一类的对象使用方法_Java_Object - Fatal编程技术网

Java 无法对同一类的对象使用方法

Java 无法对同一类的对象使用方法,java,object,Java,Object,我正在实现一个JFrame类,该类必须查看一个表并对其进行处理。这个表有一个AbstractTableModel,我在上面定义了一个方法,我想在JFrame类中使用它。但我不能这么做。 代码如下: 必须查看JTable的JFrame类 public class CreaOrario extends JFrame { public CreaOrario(int num) { initialize(num); } /** * Initialize the contents of th

我正在实现一个
JFrame
类,该类必须查看一个表并对其进行处理。这个表有一个
AbstractTableModel
,我在上面定义了一个方法,我想在
JFrame
类中使用它。但我不能这么做。 代码如下:

必须查看JTable的JFrame类

public class CreaOrario extends JFrame {


public CreaOrario(int num) {
    initialize(num);
}

/**
 * Initialize the contents of the frame.
 */
private void initialize(final int semestre) {
    this.setSize(1150,650);
    this.setTitle("Creazione dell'Orario");
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    TabellaOrario orarioEditabile = new TabellaOrario(semestre);
    this.getContentPane().add(orarioEditabile, BorderLayout.CENTER);

    final JTable table = orarioEditabile.getTable();
    //now I'd like to do: table.getLesson;
}
}
必须添加到JFrame中并包含以下表的JPanel类:

public class TabellaOrario extends JPanel
{
private JTable table;

public TabellaOrario (int semestre)
{

    setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 
    table = new JTable(new MyTableModel());
    table.setFillsViewportHeight(true);     
    table.setPreferredScrollableViewportSize(new Dimension(510, 350));
    JScrollPane jps = new JScrollPane(table);
    add(jps);
    add(new JScrollPane(table));
    table.setCellSelectionEnabled(true);
    table.setRowHeight(40);

}

public JTable getTable() {
    return table;
}
public class MyTableModel extends AbstractTableModel 
{   


private String[] columns = {"","Lunedì","Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"};


private Object [][] data = {{"8:30 - 9:30","","","","","",""},
        {"9:30 - 10:30","","","","","",""},
        {"10:30 - 11:30","","","","","",""},
        {"11:30 - 12:30","","","","","",""},
        {"12:30 - 13:30","","","","","",""},
        {"13:30 - 14:30","","","","","",""},
        {"14:30 - 15:30","","","","","",""},
        {"15:30 - 16:30","","","","","",""},
        {"16:30 - 17:30","","","","","",""}};



        @Override
        public int getColumnCount() {
            return columns.length;
        }

        @Override
        public int getRowCount() {
            return data.length;
        }

        @Override
        public String getColumnName(int col) {
            return columns[col];
        }

        @Override
        public Object getValueAt(int row, int col) {
            return data[row][col];

        }

        @Override
        public void setValueAt(Object aValue, int row, int col) {
            data[row][col] = aValue;
            fireTableCellUpdated(row, col);

            }

     }
        public String[] getLesson (int row, int column)
        {
            String value = (String) table.getValueAt(row, column);
            int start = value.indexOf("<b>");
            int end = value.indexOf("</b>");
            String insegnamento = value.substring(start + "<b>".length(), end);

            start = value.lastIndexOf("<b>");
            end = value.lastIndexOf("</b>");
            String aula = value.substring(start + "<b>".length(), end);

            return new String[] {insegnamento,aula};

        }
}
}
公共类TabellaOrario扩展了JPanel
{
专用JTable表;
公共塔贝拉奥拉里奥酒店
{
setLayout(新的BoxLayout(这是BoxLayout.Y_轴));
table=新的JTable(新的MyTableModel());
表.setFillsViewPerthweight(真);
表.setPreferredScrollableViewportSize(新维度(510350));
JScrollPane jps=新的JScrollPane(表);
增补(太平绅士);
添加(新JScrollPane(表));
table.setCellSelectionEnabled(真);
表1.设置行高(40);
}
公共JTable getTable(){
返回表;
}
公共类MyTableModel扩展了AbstractTableModel
{   
私有字符串[]列={”、“Lunedì”、“Martedì”、“Mercoledì”、“Giovedì”、“venredì”、“Sabato”};
私有对象[][]数据={{“8:30-9:30”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”},
{"9:30 - 10:30","","","","","",""},
{"10:30 - 11:30","","","","","",""},
{"11:30 - 12:30","","","","","",""},
{"12:30 - 13:30","","","","","",""},
{"13:30 - 14:30","","","","","",""},
{"14:30 - 15:30","","","","","",""},
{"15:30 - 16:30","","","","","",""},
{"16:30 - 17:30","","","","","",""}};
@凌驾
public int getColumnCount(){
返回列的长度;
}
@凌驾
public int getRowCount(){
返回数据长度;
}
@凌驾
公共字符串getColumnName(int-col){
返回列[col];
}
@凌驾
公共对象getValueAt(整数行,整数列){
返回数据[行][col];
}
@凌驾
public void setValueAt(对象有效、整行、整列){
数据[行][列]=aValue;
FireTableCell更新(行、列);
}
}
公共字符串[]getLesson(int行,int列)
{
字符串值=(字符串)table.getValueAt(行、列);
int start=value.indexOf(“”);
int end=value.indexOf(“”);
String insignamento=value.substring(开始+“”.length(),结束);
开始=值。lastIndexOf(“”);
结束=值。lastIndexOf(“”);
字符串aula=value.substring(开始+“”.length(),结束);
返回新字符串[]{insignanto,aula};
}
}
}
MyTableModel
类中,我定义了要在
CreaOrario
类中使用的方法
getLesson()

但是,如果在
MyTableModel
中写入
table.getLesson()
,则会显示一条消息错误,表明
类型JTable的getLesson()方法未定义。

为什么?
table
infact是一个
TabellaOrario
对象,并将
MyTableModel
作为模型
getLesson()
是为
MyTableModel
定义的,所以我希望
table.getLesson()
可以工作。

正如您的代码所示
getLesson
是在
TabellaOrario
中定义的,而不是在
MyTableModel
中定义的。这可能就是问题所在

尝试保持代码的形式,您将看到该方法没有在类中实现

public class TabellaOrario extends JPanel
{
   private JTable table;
   MyTableModel tm;

   public TabellaOrario (int semestre)
   {

       setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
       tm = new MyTableModel();
       table = new JTable(tm);
       // YOU CAN NOW CALL tm.getLesson() OR table.((MyTableModel)getTableModel()).getLesson();
       table.setFillsViewportHeight(true);     
       table.setPreferredScrollableViewportSize(new Dimension(510, 350));
       JScrollPane jps = new JScrollPane(table);
       add(jps);
       add(new JScrollPane(table));
       table.setCellSelectionEnabled(true);
       table.setRowHeight(40);
   }

   public JTable getTable() {
       return table;
   }

    public class MyTableModel extends AbstractTableModel 
    {   


       private String[] columns = {"","Lunedì","Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"};


       private Object [][] data = {{"8:30 - 9:30","","","","","",""},
            {"9:30 - 10:30","","","","","",""},
            {"10:30 - 11:30","","","","","",""},
            {"11:30 - 12:30","","","","","",""},
            {"12:30 - 13:30","","","","","",""},
            {"13:30 - 14:30","","","","","",""},
            {"14:30 - 15:30","","","","","",""},
            {"15:30 - 16:30","","","","","",""},
            {"16:30 - 17:30","","","","","",""}};



            @Override
            public int getColumnCount() {
                return columns.length;
            }

            @Override
            public int getRowCount() {
                return data.length;
            }

            @Override
            public String getColumnName(int col) {
                return columns[col];
            }

            @Override
            public Object getValueAt(int row, int col) {
                return data[row][col];

            }

            @Override
            public void setValueAt(Object aValue, int row, int col) {
                data[row][col] = aValue;
                fireTableCellUpdated(row, col);

                }

            public String[] getLesson (int row, int column)
            {
                String value = (String) table.getValueAt(row, column);
                int start = value.indexOf("<b>");
                int end = value.indexOf("</b>");
                String insegnamento = value.substring(start + "<b>".length(), end);

                start = value.lastIndexOf("<b>");
                end = value.lastIndexOf("</b>");
                String aula = value.substring(start + "<b>".length(), end);

                return new String[] {insegnamento,aula};

            }
    }
}
公共类TabellaOrario扩展了JPanel
{
专用JTable表;
MyTableModelTM;
公共塔贝拉奥拉里奥酒店
{
setLayout(新的BoxLayout(这是BoxLayout.Y_轴));
tm=新的MyTableModel();
表=新JTable(tm);
//现在可以调用tm.getLessure()或table。((MyTableModel)getTableModel()).getLessure();
表.setFillsViewPerthweight(真);
表.setPreferredScrollableViewportSize(新维度(510350));
JScrollPane jps=新的JScrollPane(表);
增补(太平绅士);
添加(新JScrollPane(表));
table.setCellSelectionEnabled(真);
表1.设置行高(40);
}
公共JTable getTable(){
返回表;
}
公共类MyTableModel扩展了AbstractTableModel
{   
私有字符串[]列={”、“Lunedì”、“Martedì”、“Mercoledì”、“Giovedì”、“venredì”、“Sabato”};
私有对象[][]数据={{“8:30-9:30”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”},
{"9:30 - 10:30","","","","","",""},
{"10:30 - 11:30","","","","","",""},
{"11:30 - 12:30","","","","","",""},
{"12:30 - 13:30","","","","","",""},
{"13:30 - 14:30","","","","","",""},
{"14:30 - 15:30","","","","","",""},
{"15:30 - 16:30","","","","","",""},
{"16:30 - 17:30","","","","","",""}};
@凌驾
public int getColumnCount(){
返回列的长度;
}
@凌驾
public int getRowCount(){
返回数据长度;
}
@凌驾
公共字符串getColumnName(int-col){
返回列[col];
}
@凌驾
公共对象getValueAt(整数行,整数列){
返回数据[行][col];
}
@凌驾
public void setValueAt(对象有效、整行、整列){
数据[行][列]=aValue;
FireTableCell更新(行、列);
}
公共字符串[]getLesson(int行,int列)
{
字符串值=(字符串)table.getValueAt(行、列);
int start=value.indexOf(“”);
int end=value.indexOf(“”);
String insignamento=value.substring(开始+“”.length(),结束);
开始=值。lastIndexOf(“”);
end=value.las
String[] lessons = ((TabellaOrario.MyTableModel)table.getModel()).getLesson();