Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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 我如何为JApplet添加一个点?_Java_Eclipse_Swing_Japplet - Fatal编程技术网

Java 我如何为JApplet添加一个点?

Java 我如何为JApplet添加一个点?,java,eclipse,swing,japplet,Java,Eclipse,Swing,Japplet,我试图在我的JApplet中添加一点,并且一直在搜索google和yahoo,但都没有找到答案。每当我这样做的时候 public class Chaos { Point p = new Point(75, 25); public void frame() { JApplet applet = new JApplet applet.add(p); //error on this line } } Eclipse说类型容器中的addComponent方法不适用于参数

我试图在我的JApplet中添加一点,并且一直在搜索google和yahoo,但都没有找到答案。每当我这样做的时候

public class Chaos
{
  Point p = new Point(75, 25);
  public void frame()
  {
    JApplet applet = new JApplet
    applet.add(p); //error on this line
  }
}
Eclipse说类型容器中的addComponent方法不适用于参数点 对某些人来说,这似乎是一个显而易见的问题,我对Java比较陌生/

一些基本规则:

您可以合法调用变量的唯一方法是该变量可用的方法。 对于核心Java类,如JApplets,这些方法在JavaAPI中定义良好。 如果您在API中查找JApplet及其所有父类,您会发现没有add方法addPoint p接受点参数,因此编译器可以正确地抱怨。 你这个问题的主要问题是你告诉我们问题,但你没有告诉我们你想解决什么。正如我在上面的评论中所说,在JApplet中添加一个点没有逻辑意义。您希望小程序如何处理这一点?改变是位置?在窗户上画一个点?这些细节将改变你可能获得的解决方案,在我们知道之前,我们只能告诉你一些一般规则,比如我在这篇文章中列出的规则。 如果你的目标是在JApplet上画画,那么在JPanel的paintComponent中画画。。。方法,然后使该JPanel成为JApplet的contentPane。有几个不错的教程将向您展示如何做到这一点。 不要使用小程序或直接用画图。。。正如另一张海报所建议的,当你失去了Swing图形的所有好处时,包括当你想做动画时的自动双缓冲。 根据安德鲁·汤普森(Andrew Thompson)的说法,Swing Graphics还为您提供:键绑定、表、树和格式化文本组件、PLAF、一些布局,以及访问本世纪使用过它的人的权限。。 下面是一个使用JApplet绘制的示例:
这是因为您只能将派生类intance添加到JApplet,尽管如果您使用的是JApplet,则添加派生实例更可取。Eclipse指出代码中存在语义错误,因为数据类型(add方法的预期类型)和作为参数传递的变量类型不匹配

如果要在小程序中绘制点,必须在代码中重写小程序的绘制方法,并绘制一条一像素长的直线或一个像素大小的矩形。大概是这样的:

import java.awt.*;
import javax.swing.JApplet;

public class test extends JApplet {
    @Override
    public void paint(Graphics g) {
        int x = 75;
        int y = 75;
        g.fillRect(x, y, 1, 1);
    }   
}
如果您计划向画布添加多个点,请将其存储在列表中,然后迭代并绘制,然后使用上述绘制方法:

public class test extends JApplet {
    private List<Point2D> points;

    @Override
    public void init() {
        points = new ArrayList<Point2D>();
        points.add(new Point2D.Double(75.0, 75.0));
    };

    @Override
    public void paint(Graphics g) {
        g.setColor(Color.BLUE);
        for (Point2D p : points) {
            int x = (int) p.getX();
            int y = (int) p.getY();
            g.fillRect(x, y, 1, 1);
        }
    } 
}

如果您真的想将点视为s,那么您可以创建自己的自定义点类,该类派生自一个现有类,但这样更为复杂。

向JApplet添加点是什么意思?没有任何意义,因为小程序将如何处理点对象?您可以将组件添加到JApplet。。。但是,您试图通过这个非常奇怪的请求实现什么呢?Eclipse是正确的,因为Point类不是组件类JApplet applet=new JApplet的子类,这不是创建applet的方法。。并不是说它可以编译。这可能会编译jappletapplet=newjapplet;但仍然不是创建小程序的正确方法。请不要建议他使用AWT组件。为什么建议某人使用功能较弱的GUI库?除了学习一个比Swing更过时的GUI库之外,他还有什么可能获得的好处呢?你的观察是有效的,尽管我不是建议用AWT替换Swing API,我是建议对于简单的测试绘图,我认为他正在尝试实现的是使用一个更简单的画布,这样他可以专注于绘图。我更新了答案,删除了那个建议以避免误解…失去了Swing图形的所有好处,包括自动双缓冲。。键绑定、表、树和格式化文本组件、PLAF、一些布局,以及访问本世纪使用过它的人的权限。。