Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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 swing组件_Java_Eclipse_Swing - Fatal编程技术网

无法解析java swing组件

无法解析java swing组件,java,eclipse,swing,Java,Eclipse,Swing,我从教程中获取了以下代码: import javax.swing.*; import java.util.Date; public class SwingGUI { public static void main( String[] args ) { JFrame f = new JFrame( "test" ); f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); f.s

我从教程中获取了以下代码:

import javax.swing.*;
import java.util.Date;

public class SwingGUI {

    public static void main( String[] args )
      {
        JFrame f = new JFrame( "test" );
        f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        f.setSize( 1500, 900 );
        JLabel l = new JLabel( String.format( "%tT", new Date() ) );
        f.add(l);
        f.setVisible( true );
      }
}
f.add(l)高亮显示,并显示两个错误:

  • 类型容器中的方法add(Component)不适用于参数(JLabel)

  • 无法解析javax.swing.JComponent类型。它是从必需的.class文件间接引用的

由于对java比较陌生,我并不真正理解Eclipse想要告诉我什么。我能做些什么使它工作


编辑:代码运行时没有行
f.add(l),所以问题不是没有找到JFrame或JLabel。经过一段时间的反复尝试,我消除了第一个错误,但第二个错误仍然存在。无法解析该组件,因为它是间接引用的。这是什么意思?

只是猜测,但它符合您描述的问题:

当您自己的包包含名为
JLabel
的类时,可能会出现此问题。然后,本地类将从
javax.swing
-包中隐藏导入的
JLabel
-类,并且它可能与原始类没有相同的类层次结构


总而言之:将自己的类命名为现有的JDK类通常是一个坏主意。

显然问题不在于代码,因为它适用于其他所有人。所以我决定删除并重新安装java和eclipse,等等!现在它起作用了。谢谢大家的反馈。

我遇到了同样的问题,发现我的项目使用的是Java 8库。 我安装了Java 7库,通过引用已安装的
C:\Program Files\Java
文件夹中的库,将其添加到项目属性中,错误消失了

看起来,新的Java8版本可能是解决swing组件的另一种方式

  • Eclipse中必须安装(并选择)JDK:

    窗口>首选项>Java>已安装的JRE

  • 必须将项目配置为使用该JDK:

    项目>属性>Java构建路径>库

  • 列表中应该有一个类似“JRE系统库[JDK7]”的条目。如果没有,请按:

    添加库…>JRE系统库

  • 项目应创建为“Java项目”:

    项目>属性>生成器

    应包括“Java Builder”

  • 我也有这个问题。 不幸的是,为了解决这个问题,我需要安装eclipse。但我认为问题在于Eclipse中JRE和JAVA版本之间的不兼容


    当我的项目(和EclipseIndigo)无法升级到JAVA8时,我使用了JRE支持的JAVA8。更新到另一个支持Java8的eclipse可以解决这个问题。

    我是这里的新手。我有这个问题,花了我两天的研究。我通过向Eclipse添加一个包含所有必需组件的外部JAR文件来解决这个问题。右键单击项目>>构建路径>>配置构建路径>>添加外部JAR并浏览计算机上的JAR文件。JAR文件可以在这里下载
    希望这对其他人有所帮助。

    我在eclipse IDE中也遇到了同样的问题,但在将jar文件更改为jre7(右键单击项目>>构建路径>>配置构建路径>>添加库>>Jre系统库)后,错误已得到解决,我不知道它是怎么发生的。有人能解释一下吗。

    问题不在代码中

    这是由于项目的JRE配置错误造成的。 这可能是由于项目的JRE和工作区的JRE之间存在差异。

    可以通过更新Eclipse或Jre…

    但在我这边,我建议你这样做

    转到窗口-->首选项-->Java-->安装的JRE-->执行环境-->选择项目的JRE并勾选与安装的JRE完全匹配的选项。

    如果您没有匹配的JRE下载,请使用“添加”按钮将其添加到已安装的JRE中。

    最后,重新启动Eclipse IDE。 这对我来说很好


    如果不起作用,更新Eclipse

    将系统库下的执行环境更新为Eclipse中的JavaSE-1.7或JavaSE-1.8应该可以解决问题。 要更新,请执行以下步骤:

    > Right-click on the project
    > Select properties
    > Java build path
    > Library > Add Library > Add JRE SYSTEM Library
    > Execution Environment
    > Select JavaSE-1.7 or JavaSE-1.8
    > Finish
    

    项目-->清理?清理没有帮助。我建立了一个新的项目,选择了jre1.8.031,创建了新的包和类,但我仍然收到错误消息,删除java swing的导入,然后在eclipse中使用control-shift-O让它找到JFrame类并导入它。错误消息显示找不到JFrame;也许您是从示例中而不是从您的类中复制了上面的内容,并且有一些拼写错误。如果eclipse找不到任何东西,这意味着swing库在某种程度上无法用于此eclipse项目。问题不在于JFrame或JLabel本身。代码运行时没有
    f.add(l)不幸的是,我不是这样。没有本地类,只有javax.swing.JLabel。当您将鼠标悬停在代码中的
    JLabel
    上时,eclipse会显示什么?javax.swing.JLabel和javax.swing.JLabel.JLabel(字符串arg0),具体取决于我将鼠标悬停在哪个JLabel上。此外,在这两种情况下,它都显示“注意:这个元素既没有附加的源代码也没有附加的Javadoc,因此找不到Javadoc”,我使用的是jdk1.7.0_55,但有相同的错误。MacEclipse中的“无法将大型机(扩展JFrame)强制转换为JComponent”。