【问题标题】:java swing component cannot be resolvedjava swing组件无法解析
【发布时间】:2015-04-19 08:45:28
【问题描述】:

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

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); 突出显示,并显示两个错误:

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

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

对于 java 来说相对较新,我真的不明白 Eclipse 试图告诉我什么。我该怎么做才能让它发挥作用?

edit:代码运行时没有f.add(l);这一行,所以问题不在于找不到JFrame或JLabel。在摆弄了一下之后,我摆脱了第一个错误,但第二个仍然存在。该组件无法解析,因为它是间接引用的。这是什么意思?

【问题讨论】:

  • 项目-->清理... ?
  • 清理没有帮助。我建立了一个新项目,选择了jre1.8.0_31,创建了新的包和类,但我仍然收到错误消息
  • 尝试删除java swing的导入,然后在eclipse中使用control-shift-O让它找到JFrame类并导入。错误消息似乎说它找不到 JFrame;也许您从示例而不是您的课程中复制了上面的内容,并且拼写错误。如果 eclipse 没有找到任何东西,这意味着这个 eclipse 项目无法使用 swing 库。
  • 我试过ctrl-shift-o,但没有帮助。问题不在于 JFrame 或 JLabel 本身。代码在没有f.add(l); 的情况下运行

标签: java eclipse swing


【解决方案1】:

在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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      看起来,新的 Java 8 版本可能会以不同的方式来解决 Swing 组件。

      【讨论】:

      • 我使用的是 jdk1.7.0_55,但出现同样的错误。 Mac Eclipse 中的“无法将 MainFrame(扩展 JFrame)转换为 JComponent”。
      • 出于某种奇怪的原因,将我的项目类路径 JDK 从 Java 8 降级到 Java 7 修复了它!虽然 JToolBar 类在我尝试过的所有较新的 JDK 中都可用,包括 8、11、15。
      【解决方案4】:

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

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

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

      【讨论】:

      • 不幸的是,这不是我的情况。没有本地类,只有 javax.swing.JLabel。
      • 当您将鼠标悬停在代码中的 JLabel 上时,eclipse 会显示什么?
      • javax.swing.JLabel 和 javax.swing.JLabel.JLabel(String arg0) 分别取决于我将鼠标悬停在哪个 JLabel 上。此外,在这两种情况下,它都显示“注意:该元素既没有附加源代码也没有附加 Javadoc,因此找不到 Javadoc”
      【解决方案5】:

      我也遇到了这个问题。 不幸的是,要解决它,我需要安装我的 Eclipse。但我认为问题是 Eclipse 中 JRE 和 JAVA 版本不兼容

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

      【讨论】:

        【解决方案6】:
        1. Eclipse 中必须有一个已安装(并已选择)的 JDK:

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

        2. 项目必须配置为使用该 JDK:

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

        3. 列表中应该有一个类似“JRE System Library [JDK7]”的条目。如果不按:

          添加库...> JRE 系统库

        4. 该项目应该已创建为“Java 项目”:

          项目 > 属性 > 构建器

          应包括“Java Builder”

        SoCodeIt IDE Dr

        【讨论】:

          【解决方案7】:

          我是新来的。我遇到了这个问题,我花了 2 天的时间研究。我通过向我的 Eclipse 添加一个包含所有必需组件的外部 JAR 文件来解决它。右键单击项目>>构建路径>>配置构建路径>>添加外部 JARS 并浏览您计算机上的 JAR 文件。 JAR 文件可以在这里下载http://www.java2s.com/Code/Jar/j/Downloadjsdgstubsjre15jar.htm 希望这可以帮助那里的人。

          【讨论】:

            【解决方案8】:

            问题不在代码中

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

            可以通过更新Eclipse或者Jre...

            来解决

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

            转到Window-->Preferences-->Java-->Installed JREs--->Execution Environments-->选择项目的JRE并勾选完美匹配的已安装JRE。强>

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

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

            如果它不起作用,更新 Eclipse..

            【讨论】:

              【解决方案9】:

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2021-02-06
                • 2012-06-20
                • 2011-02-27
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多