getHeight()和getWidth()方法

时间:2014-01-17 10:49:41

标签: java

我写了一个程序,期望它通过使用getWidth()和getHeight()方法显示在屏幕中间,但相反,它出现在左上角。所以我的问题是getWidth()和getHeight()方法是不是应该得到整个屏幕的宽度和高度?

/*
 * This program displays Pascal's Triangle for 8 rows.
 */

import acm.graphics.*;
import acm.program.*;


public class combination extends GraphicsProgram {
    public void run() {
        for(int i = 0; i < NROWS; i++) {
            for (int n = 0; n <= i; n++) {

        add(new GLabel(Combination(i,n), x(i,n), y(i))); //the     coordination and the amount of labels are related to i;

        }       
    }
}

//method that adds labels on the screen.//
private String Combination(int i, int n) { //this method returns a string which   would be added to the screen.//

    return (String.valueOf(i) +","+ String.valueOf(n)); 
    }


//method that set the y coordination for the label//
private double y(int i) {
    double Height = getHeight()/NROWS;
    return i * Height + 9;

}

//method that set the x coordination for the label//
private double x(int i, int n)  {
    double Orgnx = getWidth() / 2;
    double HalfBase = getHeight() / NROWS / Math.sqrt(3);
    double Base = HalfBase * 2;
    return Orgnx - i * HalfBase + n * Base;
    }


/*The program displays 8 rows of pairs of number.*/
private static final int NROWS = 8;

2 个答案:

答案 0 :(得分:2)

getWidth()/ getHeight()在Component中定义,因此它们返回您调用它们的组件的大小(在您的情况下,这将是窗口中的组件)。

查看Swing教程http://docs.oracle.com/javase/tutorial/uiswing/components/,了解如何组合组件以形成用户界面。

请注意“屏幕”不是Swing对象,而且“屏幕”的整个概念是一个过时的思维概念。我的桌子上有两个屏幕,我的公司几乎每个屏幕都有。您可能希望将您的心智模型适应(当前)现实。

在多个屏幕设置中居中窗口(在什么?上)是一项非常重要的任务。请参阅此问题How to center a Window in Java?及其答案。

答案 1 :(得分:0)

使用setLocationRelativeTo(null)行。这将使组件从中间打开。