无法解析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”。