Почему мои координаты не соответствуют размеру JFrame? - PullRequest
0 голосов
/ 23 марта 2010

Я хочу сделать рисование в JPanel, но размер вложенного JFrame, кажется, не совпадает с тем местом, где я попросил нарисовать координаты.

В моем примере кода установлен размер JFrameдо (700, 700) и последняя точка рисуется в (600, 600).Я ожидаю, что эта точка будет отрисована на 100 пикселей от правого и нижнего краев, но это не так (см. Скриншот).

alt text

Вот код, который я использую:

import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Scratch extends JPanel {

    static int frameWidth = 700;
    static int frameHeight = 700;

    public static void main(String[] args) {

    JFrame frame = new JFrame();

    frame.setSize(frameWidth, frameHeight);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Scratch scratch = new Scratch();

    frame.getContentPane().add(scratch);

    frame.setVisible(true);

    }

    @Override
    public void paintComponent(Graphics g) {

    g.drawRect(100, 100, 1, 1);

    g.drawString("100", 100, 100);

    g.drawRect(200, 200, 1, 1);

    g.drawString("200", 200, 200);

    g.drawRect(300, 300, 1, 1);

    g.drawString("300", 300, 300);

    g.drawRect(400, 400, 1, 1);

    g.drawString("400", 400, 400);

    g.drawRect(500, 500, 1, 1);

    g.drawString("500", 500, 500);

    g.drawRect(600, 600, 1, 1);

    g.drawString("600", 600, 600);


    }

}

Ответы [ 2 ]

3 голосов
/ 23 марта 2010

Ваш JFrame, вероятно, 700x700, если вы включите декорации окон. Поскольку ваш метод paintComponent() принадлежит панели внутри вашего JFrame, все элементы будут нарисованы с началом в верхнем левом углу панели, а не в верхнем левом углу JFrame.

Возможное решение - сделать панель 700х700 и соответственно изменить размер JFrame.

2 голосов
/ 23 марта 2010

Только предположение:

public class Scratch extends JPanel {

    static int frameWidth = 700;
    static int frameHeight = 700;

    public static void main(String[] args) {

    JFrame frame = new JFrame();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Scratch scratch = new Scratch();
    scratch.setSize(frameWidth, frameHeight);

    frame.getContentPane().add(scratch);

    frame.pack();
    frame.setVisible(true);

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...