Java 方法add(Component)不适用于参数
我试图添加一个面板到我的框架,但它一直给我一个错误,我似乎不明白Java 方法add(Component)不适用于参数,java,swing,Java,Swing,我试图添加一个面板到我的框架,但它一直给我一个错误,我似乎不明白 此行有多个标记 -调试当前指令指针 -类型容器中的add(Component)方法为 不适用于参数(TestPanel) import javax.swing.*; 公共类FrameTest3{ 公共静态void main(字符串[]args){ TestPanel samplePanel=新建TestPanel(); JFrame sampleFrame=新JFrame(); sampleFrame.getContentPan
此行有多个标记
-调试当前指令指针
-类型容器中的add(Component)方法为
不适用于参数(TestPanel)
import javax.swing.*;
公共类FrameTest3{
公共静态void main(字符串[]args){
TestPanel samplePanel=新建TestPanel();
JFrame sampleFrame=新JFrame();
sampleFrame.getContentPane().add(samplePanel);
样本框架设置尺寸(300200);
sampleFrame.setVisible(真);
系统输出打印项次(“完成”);
}
}
这个完整的工作示例基于您的代码,表明问题出在您的构建环境中。另外,
隐式转发到竞争窗格JFrame::add()
- 仅在上构造和操作Swing GUI对象
- 当您真正想覆盖时,不要使用
setSize()
- 调用
以避免super.paintComponent()
- 为了便于测试,
类在语义上等同于类私有静态
你的代码似乎对我有用。这两个类是否在各自的文件中?在同一个包裹里?你能用你的问题发布完整的错误信息吗?对我来说也很好。请提供有关错误的详细信息。@HoverCraftFullOfels这是同一个包(默认包)中的两个类这是完整的错误消息“此行有多个标记-调试当前指令指针-类型容器中的方法add(Component)不适用于参数(TestPanel)”确定,您是否在附近有自己命名为
JPanel
的类?然后重新开始,重新编译,重新运行。
import java.awt.*;
import javax.swing.*;
public class TestPanel extends JPanel {
public void paintComponent(Graphics g) {
g.setColor(Color.red);
g.drawString("hello", 30, 80);
}
}
import java.awt.*;
import javax.swing.*;
public class FrameTest3 {
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
TestPanel samplePanel = new TestPanel();
JFrame sampleFrame = new JFrame();
sampleFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
sampleFrame.add(samplePanel);
sampleFrame.pack();
sampleFrame.setVisible(true);
System.out.println("Done");
});
}
private static class TestPanel extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.red);
g.drawString("hello", 30, 80);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(300, 200);
}
}
}