调整大小时Applet内容消失

时间:2010-10-14 02:15:16

标签: java applet

我从未做过Applet开发。尝试一些非常简单的事情。基本上我在窗口上画一个字符串。但是,每当我重新调整窗口大小时,内容都会消失。

关于SO的类似建议问题建议覆盖update()方法以调用repaint()。我试过了,但仍然没有这样做。另外,我如何将窗口中的字符串(“Hello World!”)居中(以便在调整大小时保持居中)?

以下是代码:

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JApplet;

public class TestApplet extends JApplet
{
 public void init(){
  setBackground (Color.gray);
 }
 public void paint (Graphics page){
  String name = "Hello World!";
  page.drawString(name,100,100);
 }

 public void update(Graphics page){
  this.repaint();
 }
}

1 个答案:

答案 0 :(得分:2)

这是用于AWT应用程序的旧代码。您永远不应该覆盖JApplet的paint()或update()方法。

使用Swing时,自定义绘制是通过覆盖JPanel(或JComponent)的paintComponent()方法完成的。然后将面板添加到小程序的内容窗格中。

阅读Custom Painting上Swing教程中的部分以获取示例和更多详细信息。本教程还有一个关于“如何制作小程序”的部分,你应该看一下。

  

另外,我如何将字符串居中   (窗口上的“Hello World!”)(所以   它即使在调整大小时仍保持居中)

使用getSize()方法获取父面板的大小。然后除以2.虽然您需要记住,Y协调是文本的底部而不是顶部。因此,您还需要考虑字体的FontMetrics以了解文本的确切高度。您可以从Graphics对象获取FontMetrics。