Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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 (泛型类)。this.revalidate();在Mac上_Java_Macos_Swing - Fatal编程技术网

Java (泛型类)。this.revalidate();在Mac上

Java (泛型类)。this.revalidate();在Mac上,java,macos,swing,Java,Macos,Swing,我使用的是2010 Mac和1.6.0_37 Java,使用DrJava进行编译。revalidate方法未编译,我收到以下错误: 2 errors found: File: /Users/#########/compsci/Final/ConnectFourFrame.java [line: 123] Error: /Users/#########/compsci/Final/ConnectFourFrame.java:123: cannot find symbol symbol : me

我使用的是2010 Mac和1.6.0_37 Java,使用DrJava进行编译。revalidate方法未编译,我收到以下错误:

2 errors found:
File: /Users/#########/compsci/Final/ConnectFourFrame.java  [line: 123]
Error: /Users/#########/compsci/Final/ConnectFourFrame.java:123: cannot find symbol
symbol  : method revalidate()
location: class ConnectFourFrame
这是导致错误的方法:

try 
{ 
  //display in window 
  updateTitleBar(); 
  ObjectInputStream ois = new ObjectInputStream(new FileInputStream(currentFile)); 
  colorGrid = (Color[][]) ois.readObject(); 
  makeGrid(); 
  for(int k = 0; k < 6; k++) 
  { 
    for(int l = 0; l < 7; l++) 
    { 
      if (colorGrid[k][l]==null) 
      { 
        grid[k][l] = new BlankTile(new Point(k, l)); 
      } 
      else if (colorGrid[k][l].equals(Color.red)) 
      { 
        grid[k][l] = new RedTile(new Point(k, l)); 
      } 
      else if (colorGrid[k][l].equals(Color.black)) 
      { 
        grid[k][l] = new BlackTile(new Point(k, l)); 
      }                              
    } 
  }                        
  putNewGrid(); 
  String currentColor = (String) ois.readObject(); 
  ois.close(); 
  ConnectFourFrame.this.repaint(); 
  ConnectFourFrame.this.revalidate();  //This is the offending line
  gp.revalidate(); 
  gp.repaint(); 
}
外部类是ConnectFourFrame扩展了JFrame并实现了Runnable

如何解决此问题?

Component.revalidate在Java 7中是新的。大概你在Windows上使用的是7,而在Mac上使用的是6

如果您需要您的代码在Java6上工作,那么您必须以不同的方式进行操作。警察说

这是一种方便的方法,可以帮助应用程序开发人员避免手动查找验证根。基本上,这相当于首先在此组件上调用invalidate方法,然后在最近的validate根上调用validate方法

因为JFrame本身就是一个验证根,所以您应该能够用invalidate替换revalidate调用,然后是validate。

Component.revalidate在Java 7中是新的。大概你在Windows上使用的是7,而在Mac上使用的是6

如果您需要您的代码在Java6上工作,那么您必须以不同的方式进行操作。警察说

这是一种方便的方法,可以帮助应用程序开发人员避免手动查找验证根。基本上,这相当于首先在此组件上调用invalidate方法,然后在最近的validate根上调用validate方法

因为JFrame本身就是一个验证根,所以您应该能够将revalidate调用替换为invalidate,后跟validate

决不在try-catch-finally块中使用GUI状态进行管理,该块对所有程序都有效。语言

在此表单中,您可以在此处发布任何异常刷新Swing GUI的代码

ois.close;应该移到最后一个街区

您的问题是JFrame的交换线路订单,并从重新验证中删除re,例如ConnectFourFrame.this.validate;然后连接fourframe.this.repaint

没有理由对Java versions>Java5使用invalidate,该方法在所有LayoutManager API中都实现,并且正确无误

在Java7中,在API中为JFrame添加了重新验证,对于次要Java版本使用验证

决不在try-catch-finally块中使用GUI状态进行管理,该块对所有程序都有效。语言

在此表单中,您可以在此处发布任何异常刷新Swing GUI的代码

ois.close;应该移到最后一个街区

您的问题是JFrame的交换线路订单,并从重新验证中删除re,例如ConnectFourFrame.this.validate;然后连接fourframe.this.repaint

没有理由对Java versions>Java5使用invalidate,该方法在所有LayoutManager API中都实现,并且正确无误

在Java7中,在API中为JFrame添加了重新验证,对于次要Java版本使用验证


这可以在Windows上编译并运行,但不能在Mac上编译。这可以在Windows上编译并运行,但不能在Mac上编译。JComponentrevalidate存在于JDK1.6上,并且由于类是从JFrame扩展而来,所以它应该只编译fine@RobinJFrame没有扩展JComponent.Whoops。你是对的。因此,我们习惯于看到J前缀意味着它扩展了JComponent…@Robin我怀疑swing的设计者希望它能够,但是,由于Java不执行多重继承,而且JFrame必须是一种窗口,所以他们没有这个选项……JComponentrevalidate存在于JDK1.6上,并且由于该类从JFrame扩展而来,所以应该只编译它fine@RobinJFrame没有扩展JComponent.Whoops。你是对的。因此,在看到J前缀意味着它扩展了JComponent…@Robin时,我怀疑swing的设计者希望它能够,但由于Java不做多重继承,而且JFrame必须是一种窗口,所以他们没有这个选项。。。