棋盘中心和在java中调整大小

时间:2014-03-22 23:02:52

标签: java swing resize jframe jcomponent

我写了一个棋盘程序(如下所示)。我的问题是我无法弄清楚如何使用调整大小来居中,并让它按比例调整大小。

我在一份简短的声明中补充道。 Int调整大小(如下所示)我做了一些类似于以前使用半径的靶心的程序。我只是没有丝毫的线索如何在这里实现它。

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

 public class CheckerboardComponent extends JComponent {
@Override
public void paintComponent(Graphics g) {

    Graphics2D g2 = (Graphics2D) g;

    g2.setColor(Color.RED);

    int s = 12; 
    int x = s;
    int y = s;

   // int resize = Math.min(this.getHeight(), this.getWidth()) / 8 ;

    for (int i = 0; i < 8; i++) {
        // one row
        for (int j = 0; j < 8; j++) {
            g2.fill(new Rectangle(x, y, 4 * s, 4 * s) );
            x += 4 * s;
        if(g2.getColor().equals(Color.RED)){
            g2.setColor(Color.BLACK);
        }else{
            g2.setColor(Color.RED);
        }              
        }

        x = s; 
        y += 4 * s; 
        if(g2.getColor().equals(Color.RED)){
            g2.setColor(Color.BLACK);
        }else{
            g2.setColor(Color.RED);
        }
    }
 } 

 }

这是一个观众程序

import javax.swing.*;


 public class CheckersViewer {

public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setSize(430, 450);
    frame.setTitle("Checkerboard");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    CheckerboardComponent component = new CheckerboardComponent();
    frame.add(component);

    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}

}

1 个答案:

答案 0 :(得分:0)

嗯......这是一个想法,虽然它可能不是一个好的(我对jComponent和jFrame也没那么好,所以可能会更好方式和更适合的人)

我相信组件对象有一个名为getSize()的内置方法。如果您可以将矩形的大小与窗口的大小相关联,那么它可以调整大小。显然会有更多的代码和参数,但例如:

public void drawStuff(Component c)
{
       ...
       Dimension size = c.getSize();
       double RectWidth = (size.width)*(.05); 
       ...
}

查看这个以获得更完整的示例: http://www.javadocexamples.com/java/awt/Component/getSize().html

我道歉,我可以提供更多帮助。