首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JComponent尺寸问题

JComponent尺寸问题
EN

Stack Overflow用户
提问于 2011-11-05 01:41:09
回答 2查看 203关注 0票数 2

我有一个JComponent子类,用于在屏幕上绘制形状。在构造函数中,我试图将ballXballY设置为JComponent的X和Y大小值的一半,我认为我做错了。我已经查了很多次了,找不到补救办法。代码如下。请记住,这是我第一次真正的Swing/Graphics2D冒险。

代码语言:javascript
复制
public class PongCanvas extends JComponent {
//Vars to hold XY values and Dimension values.

    private int batXDim, batYDim;
    private int b1X, b1Y;
    private int b2X, b2Y;
    private int ballRad, ballX, ballY;

    public PongCanvas() {//Instantiate vars.
        batXDim = 20;
        batYDim = 100;

        b1X = 0;
        b1Y = 0;

        b2X = 0;
        b2Y = 0;

        ballRad = 20;
        ballX = getWidth() / 2;
        ballY = getHeight() / 2;
    }

    public void paint(Graphics g) {//Main paint Method.
        //Cast Graphics to Graphics2D.
        Graphics2D g2 = (Graphics2D) g;
        //Enable antialiasing.
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        //Draw background.
        g2.setPaint(Color.black);
        g2.fillRect(0, 0, getWidth(), getHeight());
        //Draw ball.
        g2.setPaint(Color.white);
        g2.fillOval(ballX, ballY, ballRad, ballRad);
        //Draw bat 1.
        g2.fillRect(b1X, b1Y, batXDim, batYDim);
        //Draw bat 2.
        g2.fillRect(b2X, b2Y, batXDim, batYDim);
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-05 02:28:09

getPreferredSize()中重写JComponent以返回首选的大小,并以该Dimension的一半宽度和高度开始。为了同一目的,这个KineticModel调用DisplayPanel中的setPreferredSize()

增编:作为解释,您当前的方法失败了,因为来自getWidth()getHeight()的结果是无效的,直到在容器上调用了validate(),通常是pack()的结果。

票数 5
EN

Stack Overflow用户

发布于 2011-11-05 07:22:28

我同意垃圾神的回答。(+1)

将ballX和ballY在paintComponent(g)中移动如下

代码语言:javascript
复制
if (ballX==0 && ballY==0) {
    ballX = getWidth()/2;
    ballY = getHeight()/2;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8017561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档