2

这是我第一次弄乱 JApplet.. 我试图让这个 JTextField() 正常工作......但无论我做什么,我都无法让它显示在页面上!

import java.awt.*;
import javax.swing.*;

public class Hangman extends JApplet{
    private static final long serialVersionUID = -3966472303224962681L;

    public void paint(Graphics g){
        super.paint(g);
        Container c = getContentPane();
        JTextField input = new JTextField(20);

        c.setBackground(Color.BLACK);

        g.setColor(Color.WHITE);
        g.setFont(new Font("Arial", Font.BOLD, 30));
        g.drawString("Welcome to the Hagman Applet for the Web!", 20, 30);

        g.setFont(new Font("Arial", Font.ITALIC, 18));
        g.drawString("also available on android.", 20, 50);

        c.add(input);
        input.getText();
    }
}
4

2 回答 2

1

您不应该在“paint”方法中将组件添加到您的小程序中。在构造函数中执行它:

 public Hangman() {
    Container c = getContentPane();
    c.setBackground(Color.BLACK);
    JTextField input = new JTextField(20);
    c.setLayout(new BorderLayout());
    c.add(input, BorderLayout.SOUTH);
}
于 2013-05-08T14:18:51.527 回答
0

查找有关JApplet的教程(链接到 javadoc)。它与 JFrame 没有区别。

您可以调用setLayout(...)布局管理器或setLayout(null)绝对定位(需要定位 JTextField 等所有组件)。

您可以将组件添加到getContentPane().

有四个可覆盖的生命周期函数:init, start, stop, destroy. (您可能忽略了它们,因为它们是在基类 Applet 中定义的。)因此,例如将所有代码放入start. 忘了paint。(重绘可能会定期发生!)

对静态文本使用 JLabel,也可以使用 JButton。

于 2013-05-08T14:09:20.193 回答