我是 Mac OS X 新手,使用的是版本 10.6.5。系统中似乎预装了 JDK 1.6_u22。我已经下载了 Eclipse 3.5.2。
如果我创建一个简单的 hello world,它工作正常,但我无法导入 JFrame
或使用 Swing。我收到的错误消息是:
Access restriction: The type JFrame is not accessible due to restriction on required library /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar
这是我尝试过的简单程序:
import javax.swing.JFrame;
public class Test {
public static void main(String[] args) {
new JFrame();
}
}
如何在 Mac OS X 上的 Eclipse 中使用 Java Swing?
最佳答案
在 Mac OS X 10.5.8、Eclipse 3.4.2 和 Xcode 3.1.4 上,下面的示例使用 Java 1.5 或 Java 1.6 的最新版本进行构建和运行。由于 Xcode 包含 JDK,您使用的是哪个版本的 Mac OS X 和 Xcode?p>
还要验证您的 Swing 项目是否无意中包含了 SWT。
附录:检查这两个对话框:
Eclipse > Preferences > Java > Build Path
Eclipse > Preferences > Java > Installed JREs
您应该看到对 /System/Library/Frameworks/JavaVM.framework/
的引用.
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
public class X {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JPanel() {
private final int SIZE = 200;
private final int INSET = 20;
@Override
public Dimension getPreferredSize() {
return new Dimension(SIZE, SIZE);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.blue);
Line2D line1 = new Line2D.Double(INSET, INSET,
getWidth() - INSET, getHeight() - INSET);
Line2D line2 = new Line2D.Double(getWidth() - INSET,
INSET, INSET, getHeight() - INSET);
g2.setStroke(new BasicStroke(16,
BasicStroke.CAP_ROUND,
BasicStroke.JOIN_BEVEL));
g2.draw(line1);
g2.draw(line2);
}
});
frame.pack();
frame.setVisible(true);
}
}
关于java - 如何在 Mac OS X 上的 Eclipse 中使用 Java Swing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4611295/