我想在启动/初始化时更改applet中的JPanel对象。我不知道该怎么做。我已经做了一个简单的例子来说明我清除JPanel的问题。当它由init()方法调用时,它不起作用,但是当我按下按钮时,它起作用。如何在启动/初始化时更改JPanel?

import javax.swing.JApplet;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class TestStartUpApplet extends JApplet {

    JPanel panel;

    @Override
    public void init() {
        System.out.println("Init");
        erasePanel();
    }

    private void erasePanel() {
        Graphics g = panel.getGraphics();
        g.clearRect(0, 0, 117, 48);
    }

    public TestStartUpApplet() {
        getContentPane().setLayout(null);

        panel = new JPanel();
        panel.setBackground(Color.RED);
        panel.setBounds(35, 36, 117, 48);
        getContentPane().add(panel);

        JButton btnTest = new JButton("Test");
        btnTest.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                erasePanel();
            }
        });
        btnTest.setBounds(35, 108, 117, 25);
        getContentPane().add(btnTest);

    }
}

最佳答案




不知道为什么要在没有任何自定义绘画的情况下清除空的JPanel
JPanel红色Background有什么问题
您清除JApplet,然后在屏幕上将其显示
不能正常工作,因为什么都不工作


建议


不要使用AbsoluteLayout,而是使用LayoutManager
Graphics g = panel.getGraphics();可用于printing to the printer,或保存Graphics to the image,请勿出于其他原因使用此方法
阅读JApplet的工作原理
如果您不想将GUI发布到Web浏览器,则可能使用JFrame
也许阅读有关2D Graphics的教程

09-28 06:32