在JApplet中使用JTextField

时间:2013-05-08 13:17:54

标签: java swing input jframe japplet

这是我第一次搞乱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();
    }
}

2 个答案:

答案 0 :(得分:1)

您不应在“paint”方法中向applet添加组件。这样做。在构造函数中:

 public Hangman() {
    Container c = getContentPane();
    c.setBackground(Color.BLACK);
    JTextField input = new JTextField(20);
    c.setLayout(new BorderLayout());
    c.add(input, BorderLayout.SOUTH);
}

答案 1 :(得分:0)

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

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

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

有四种可覆盖的终身功能:init, start, stop, destroy(您可能忽略了它们,因为它们是在基类Applet中定义的。)因此,例如将所有代码放在start中。忘掉paint。 (重新绘制可能会定期发生!)

使用JLabel作为静态文本,也可以是JButton。