当前位置: 首页 > 面试题库 >

为什么不能访问面板的getWidth()和getHeight()函数?

张唯
2023-03-14
问题内容

我正在编写一个简单的程序来测试基本的GUI。该程序在屏幕中间打印一个字母,并允许用户使用箭头键移动它。一切正常,但是当我尝试在程序开始时将字母居中时,似乎getWidthand
getHeight函数未返回正确的数字。

这是包含我的Panel类的代码片段

static class LinePanel extends JPanel{
    int xCenter = getWidth() /2;
    int yCenter = getHeight() /2;

    private int x = xCenter;
    private int y = yCenter;
    private char keyChar = 'A';

    public LinePanel(){
        addKeyListener(new KeyAdapter(){
            public void keyPressed(KeyEvent e) {
                switch (e.getKeyCode()) {
                    case KeyEvent.VK_DOWN: y += 10; break;
                    case KeyEvent.VK_UP: y -= 10; break;
                    case KeyEvent.VK_LEFT: x -= 10; break;
                    case KeyEvent.VK_RIGHT: x += 10; break;
                    default: keyChar = e.getKeyChar();
                }

                repaint();

            }
        });
    }

    protected void paintComponent(Graphics g){
        super.paintComponent(g);

        g.setFont(new Font("TimesRoman", Font.PLAIN, 24));
        g.drawString(String.valueOf(keyChar), x, y);
    }
}

为什么我getWidthgetHeight函数返回“ 0”?

谢谢你的帮助


问题答案:

我不能说出原因,但:

避免这种情况的一种方法是重写getPreferredSize()函数并返回您的首选大小。



 类似资料:
  • 问题内容: 我正在动态创建我的android项目中的所有元素。我正在尝试获取按钮的宽度和高度,以便可以旋转该按钮。我只是想学习如何使用android语言。但是,它返回0。 我做了一些研究,发现除了方法之外,还需要其他地方。如果有人可以给我一个例子,那就太好了。 这是我当前的代码: 任何帮助表示赞赏。 问题答案: 你打得太早了。UI尚未调整大小并在屏幕上布置。 无论如何,我怀疑你是否想做自己正在做的

  • 本文向大家介绍解决Bitmap通过getWidth和getHeight获取尺寸不符的问题,包括了解决Bitmap通过getWidth和getHeight获取尺寸不符的问题的使用技巧和注意事项,需要的朋友参考一下 在使用BitmapFactory加载图片时,常会出现这种情况,返回的图片尺寸与实际尺寸不符。这是由于我们把图片资源放到res/drawable文件路径下时,选择的文件不同所致,不同的文件夹

  • 我正在学习一个视频教程,我想声明一个模板函数作为模板类的朋友。我不知道为什么代码会抛出错误。 编译器抛出错误。 错误: templates\u friends\u 38。cpp:在“void doSomething2(T)[T=int]”的实例化中:templates\u friends\u 38。cpp:40:19:此处需要templates\u friends\u 38。cpp:32:9:错误

  • 我遇到了一个大问题,其中有一个函数无法访问react中组件的道具: 但是当我把它改成一个胖箭头函数时,它工作得很好 这是为什么呢?我有什么不明白的?

  • 问题内容: 为什么枚举的构造函数不能访问静态字段和方法?这对于一个类是完全有效的,但对于枚举是不允许的。 我正在尝试将枚举实例存储在静态Map中。考虑下面的示例代码,它允许通过abbreivation查找: 这将不起作用,因为枚举不允许在其构造函数中使用静态引用。然而,它只是在实现为类的情况下才起作用: 问题答案: 因为所有静态字段(包括表示枚举值的静态字段)都是按文本顺序初始化的,并且枚举值始终

  • 使用scandir()函数时,我收到以下php警告: Scandir无法打开目录:公共html/page2中不允许操作。php在线3 第2页。php 我想使用这个功能来打印我的根文件夹的文件和子目录,但它不工作。 有人知道怎么修吗?