我从未做过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();
}
}
答案 0 :(得分:2)
这是用于AWT应用程序的旧代码。您永远不应该覆盖JApplet的paint()或update()方法。
使用Swing时,自定义绘制是通过覆盖JPanel(或JComponent)的paintComponent()方法完成的。然后将面板添加到小程序的内容窗格中。
阅读Custom Painting上Swing教程中的部分以获取示例和更多详细信息。本教程还有一个关于“如何制作小程序”的部分,你应该看一下。
另外,我如何将字符串居中 (窗口上的“Hello World!”)(所以 它即使在调整大小时仍保持居中)
使用getSize()方法获取父面板的大小。然后除以2.虽然您需要记住,Y协调是文本的底部而不是顶部。因此,您还需要考虑字体的FontMetrics以了解文本的确切高度。您可以从Graphics对象获取FontMetrics。