Java 求一个日本人的宽度和高度

Java 求一个日本人的宽度和高度,java,graphics,jpanel,paintcomponent,japplet,Java,Graphics,Jpanel,Paintcomponent,Japplet,我正在寻找一个JApplet的宽度和高度。我尝试了不同的方法,寻找了一个答案,但还没有找到 以下是代码的主要部分: import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JApplet; import javax.swing.Timer; public class Main extends JApplet impleme

我正在寻找一个
JApplet
的宽度和高度。我尝试了不同的方法,寻找了一个答案,但还没有找到

以下是代码的主要部分:

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.Timer;

public class Main extends JApplet implements ActionListener {
    private static final long serialVersionUID = 1L;

    Timer timer;
    public int x, y, width = 40, height = 40;

    public void init() {
        Painter painter = new Painter();
        JApplet component = new JApplet();
        x = (component.getWidth())/2 - (width/2) - 20;
        y = (component.getHeight())/2 - (height/2) - 40;

        painter.setBackground(Color.white);
        setContentPane(painter);
        setSize(1000, 500);
    }

    public void start() {
        if (timer == null) {
            timer = new Timer(100, this);
            timer.start();
        } else {
            timer.restart();
        }
    }

    public void stop() {    
        if (timer != null) {
            timer.stop();
            timer = null;
        } 
    }

    public void actionPerformed(ActionEvent ae) {
        repaint();
    }
}
下面是绘制圆的代码:

import java.awt.Graphics;
import javax.swing.JPanel;

public class Painter extends JPanel {
    private static final long serialVersionUID = 2L;

    Main m = new Main();

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawOval(m.x, m.y, m.width, m.height);
    }
}

上面仍然在
JApplet
帧的右上角
0,0
处生成圆,但它应该位于中心

JFrame有一个更好的实现

public class Main extends JFrame {

public static void main(String[] args) {
    setSize(500, 500);
    setVisible(true);
    setLayout(new FlowLayout()); // THIS LINE IS IMPORTANT
    // Put rest of code here :D
}
}

问题从这里开始

Main m = new Main();
这是一个新的小程序,一个从未在屏幕上显示的小程序&默认情况下大小为0 x 0像素

这里正确的方法是完全忽略父容器。所有相关的是正在进行定制喷漆的面板的尺寸。所以

 g.drawOval(m.x, m.y, m.width, m.height);
应该是:

g.drawOval(0, 0, getWidth(), getHeight());
关于小程序:
  • 为什么要编写小程序?如果是老师指定的,请参考
  • 见和
  • 其他提示:
  • 任何小程序都不应尝试调整自身大小。大小是在启动它的HTML中设置的,所以删除这一行

    setSize(1000, 500);
    
  • 这四个属性都在小程序的
    组件
    超类中定义。小程序继承它们。不要重新定义它们,因为这只会引起混乱。如果默认属性提供了所需的信息,请使用它们。如果没有,则以不同的方式命名属性。鉴于他们似乎在画一个圆圈,我建议
    circleX
    <代码>圆圈,
    圆圈宽度
    圆圈灯

    public int x, y, width = 40, height = 40;
    

  • 步骤1)不要使用
    JApplet
    。或者任何类型的Java小程序。为什么?为什么我不能使用JApplet?目前使用的最大浏览器Chrome不支持它。它将在Java9中从Java中完全删除。它是旧的、不安全的和没有支持的。不要用它。别学了,浏览器里已经没有Java了。完成了。你可以看看JavaWebStart“…现在网页和浏览器主要由html组成”是的。使用一些样式(CSS)使其美观,并使用JavaScript实现任何“动态”的功能。“.with Java incorporated?”没有。事实上,大多数浏览器制造商已经取消了对嵌入式Java小程序的所有支持。Sun/Oracle f**将安全性提高了一次太多,他们厌倦了尝试支持它(同时保证用户的安全)。这有什么帮助?不,随着
    JFrame
    的大小调整,流布局将不断变化。你需要看一看a。1)请对代码和代码片段、结构化文档(如HTML/XML或输入/输出)使用代码格式。为此,请选择文本并单击邮件发布/编辑表单顶部的
    {}
    按钮。2) 更广泛地说,这是一个非常糟糕的答案,提问者应该忽略。a) 他们处理的是一个小程序,而不是一个框架。b) 他们正在进行定制绘制,这应该在
    JPanel的
    paintComponent(Graphics)
    方法中。框架装饰意味着面板总是比框架小,因此找到框架尺寸是不相关的。-负一