代码之家  ›  专栏  ›  技术社区  ›  CoolBeans Jake

小程序内容在调整大小时消失

  •  0
  • CoolBeans Jake  · 技术社区  · 14 年前

    我从来没有做过applet开发。尝试一些非常简单的事情。基本上我在窗户上画一根绳子。但是,每当我重新调整窗口大小时,内容就会消失。

    关于建议重写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 回复  |  直到 14 年前
        1
  •  2
  •   camickr    14 年前

    这是用于awt应用程序的旧代码。您不应该重写japplet的paint()或update()方法。

    使用Swing自定义绘制时,通过重写jpanel(或jcomponent)的paintcomponent()方法来完成。然后将面板添加到小程序的内容窗格中。

    请阅读关于Swing教程的部分 Custom Painting 有关示例和更多详细信息。本教程还提供了一节关于“如何制作小程序”,您应该看看。

    我怎样才能把绳子居中呢 (你好,世界!)在窗户上(所以 即使调整大小也要保持居中)

    使用getSize()方法获取父面板的大小。然后除以2。尽管您需要记住,Y坐标是文本的底部,而不是顶部。因此,您还需要考虑字体的字体度量,以了解文本的确切高度。您可以从图形对象中获取fontmetrics。