Ява Холст белый край - PullRequest
       5

Ява Холст белый край

2 голосов
/ 08 февраля 2012

Итак, я хотел бы сделать приложение на основе Canvas Java. Я расширил свой основной класс до Canvas, и я изменил его размер в конструкторе.

public CanvasApp() {
    Dimension size = new Dimension(640, 480);
    setSize(size);
    setPreferredSize(size);
    setMinimumSize(size);
    setMaximumSize(size);
}

и в основной функции я делаю для него рамку, например:

CanvasApp cnv = new CanvasApp();
JFrame frame = new JFrame("");
JPanel panel = new JPanel(new BorderLayout());
panel.setBorder(null); //I've tried this
panel.setSize(640,480); //but still doesn't work =(
panel.add(cnv, BorderLayout.CENTER);

frame.setContentPane(panel);
frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

Но панель содержимого имеет размер 650x490. Почему это?

Я тоже приложил картинку.

Я нарисовал линию от 0,0 до 640,480

Ответы [ 2 ]

5 голосов
/ 08 февраля 2012

Поскольку JFrame имеет рамку размером 5px, посмотрите на любой кадр на экране компьютера, и вы заметите вид рельефной рамки - эта ширина составляет 5 пикселей по ширине, добавляя 10 пикселей к высоте и ширине.Вы только назначили панель 640 x 480 и вставили ее в рамку - рамка затем добавляет к ней свою собственную границу.

3 голосов
/ 08 февраля 2012

Вероятно, потому, что у каждого JComponen есть граница, вы помещаете свое CanvasApp в JPanel, а сам JPanel в JFrame.Это, вероятно, причина, почему вы получаете большие размеры в конце.Смотрите веб-сайт оракула о том, как использовать границы здесь: http://docs.oracle.com/javase/tutorial/uiswing/components/border.html

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