Java Swing:使用PaintComponent()的参数实例化一个类

Java Swing:使用PaintComponent()的参数实例化一个类,java,swing,constructor,Java,Swing,Constructor,我必须根据数组列表和来自不同类的整数在帧上绘制线和字符串。首先,我有以下代码: public class test3 extends JPanel { JFrame frame; static ArrayList<String> headers = new ArrayList<>(); static int inputSize; public test3 (ArrayList<String> headers, int inputSize) { th

我必须根据数组列表和来自不同类的整数在帧上绘制线和字符串。首先,我有以下代码:

public class test3 extends JPanel {

JFrame frame;
static ArrayList<String> headers = new ArrayList<>();
static int inputSize;

public test3 (ArrayList<String> headers, int inputSize)
{
    this.headers = headers;
    this.inputSize = inputSize;
}

public test3(){}

public static void main(String[] args)
{
    test3 g = new test3();
    g.setUpScreen();
}

public void setUpScreen()
{
    frame = new JFrame("Graphics Test");
    frame.setVisible(true);
    frame.setSize(700,512);
    frame.add(this);
}

public void paintComponent(Graphics g)
{
    Graphics2D g2d = (Graphics2D)(g);
    int headersX=40;
    for(int ctr=0; ctr<headers.size(); ctr++)
    {
        g2d.drawString(headers.get(ctr), headersX, 30);
        g2d.drawLine(headersX, 40, headersX, 400);
        headersX+=30;
    }
}
公共类test3扩展了JPanel{
JFrame框架;
静态ArrayList标头=新建ArrayList();
静态int输入大小;
公共测试3(ArrayList头,int-inputSize)
{
this.headers=标题;
this.inputSize=inputSize;
}
公共test3(){}
公共静态void main(字符串[]args)
{
test3 g=新的test3();
g、 设置屏幕();
}
公共屏幕()
{
框架=新的JFrame(“图形测试”);
frame.setVisible(true);
帧设置大小(700512);
框架。添加(此);
}
公共组件(图形g)
{
图形2d g2d=(图形2d)(g);
int headersX=40;

对于(int ctr=0;ctr1-在执行自己的绘制之前,确保您正在调用
super.paintComponent
;2-在这种情况下不要使用
static
变量,这会带来麻烦;3-如果您摆脱空构造函数,您将被迫提供所需的值……如果g是类名,那么您应该提供setUpScreen的e实现