Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取JPanel的大小_Java_Jframe_Jpanel_Size - Fatal编程技术网

Java 获取JPanel的大小

Java 获取JPanel的大小,java,jframe,jpanel,size,Java,Jframe,Jpanel,Size,我试图从(0,0)到面板中心画一条线。未绘制线,因为DrawingPanel构造函数中的getWidth()和getHeight()返回0。我想这是因为框架还不可见。那我怎么才能知道面板的尺寸呢 import java.awt.*; import javax.swing.*; public class DrawingApplication extends JFrame { static int CenterX; static int CenterY; public

我试图从(0,0)到面板中心画一条线。未绘制线,因为DrawingPanel构造函数中的getWidth()和getHeight()返回0。我想这是因为框架还不可见。那我怎么才能知道面板的尺寸呢

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


public class DrawingApplication extends JFrame {
    static int CenterX;
    static int CenterY;

    public DrawingApplication(){
        setTitle("Drawing Application");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setExtendedState(JFrame.MAXIMIZED_BOTH);
        DrawingPanel pnlDraw = new DrawingPanel();
        add(pnlDraw);
    }

    public static void main(String[] args) {
        DrawingApplication drawingApp = new DrawingApplication();
        drawingApp.setVisible(true);
    }
}


class DrawingPanel extends JPanel {
    int CenterX, CenterY;

    public DrawingPanel(){
        CenterX = getWidth()/2;
        CenterY = getHeight()/2;
    }

    public void paintComponent(Graphics g){
        Graphics2D g2 = (Graphics2D) g;
        super.paintComponent(g);
        g2.drawLine(0, 0, CenterX, CenterY);
    }
}

有几种方法。最简单的是:

  • 使用
    ComponentListener
    更新大小,并在触发
    ComponentShowed
    ComponentResistized
    时更新大小
  • 只需在每次绘制
    JPanel
    时获取大小即可