但使书种多,会有岁稔时。这篇文章主要讲述查找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 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
框架的右上角生成圆圈,但它应该在中心。答案问题从这里开始..
Main m = new Main();
这是一个新的小程序,它从未在屏幕上显示,并且(默认情况下)大小为0 x 0像素。
这里正确的方法是完全忽略父容器。所有相关的是正在进行自定义绘画的面板的大小。所以..
g.drawOval(m.x, m.y, m.width, m.height);
【查找JApplet的宽度和高度】应该:
g.drawOval(0, 0, getWidth(), getHeight());
重新小程序:
- 为什么编写applet?如果由于老师指定它,请将它们引用到Why CS teachers should stop teaching Java applets。
- 见Java Plugin support deprecated和Moving to a Plugin-Free Web。
- 没有小程序应该尝试调整自己的大小。大小在启动它的html中设置,因此请删除此行。
setSize(1000, 500);
- 这四个属性都在applet的
Component
超类中定义。 applet继承它们。不要重新定义它们,因为这只会引起混淆。如果默认属性提供所需信息,请使用它们。如果没有,则以不同方式命名您的属性。鉴于他们似乎参与绘制一个圆圈,我建议circleX
。circleY
,circleWidth
和circleHeight
。public int x, y, width = 40, height = 40;
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
}
}
推荐阅读
- 如何在Android中的Canvas上移动路径()
- 使用AppActivate更改活动窗口
- 以编程方式测试是否在Android 10+中禁用了旧版外部存储访问
- Powershell(类似Haskell的$(apply)运算符())
- 任务执行失败'(app:transformDexArchiveWithExternalLibsDexMergerForDebug')
- 构建Android时会忽略make -j(jobs)选项(默认为所有核心)
- 升级Android Studio 3.1.2后,ProGuard配置解析器出错()
- Android studio安装APK在手机上但无法找到该应用程序
- 下一代技术如何帮助当今防止欺诈