2014-02-19 2 views
0

Эй, так что я реализует Canvas в объекте JFrame, однако есть небольшое раздражение:JFrame пиксельная точность для холста

Если я указываю кадр быть определенный размер, то строка заголовка включается в вертикальный размер. Аналогично, если левый край окна включен с указанным размером. Я использовал абсолютное позиционирование, чтобы определить количество пикселей для строки заголовка и просто сделал мой JFrame таким количеством пикселей больше, однако я почему-то сомневаюсь, что это независимая от платформы. Есть ли способ получить/установить количество пикселей, которые могут отображаться внутри фактически используемого содержимого JFrame?

ответ

2

Обычно вы размещаете свой «холст» (который не должен быть java.awt.Canvas, но предпочтительно javax.swing.JPanel) в области содержимого кадра. При назначении предпочтительного размера для этого компонента, а затем называют pack() на раме, то кадр будет иметь правильный размер, чтобы послушный предпочтительный размер компоненты:

canvas = new MyClassExtendingJPanel(); 
canvas.setPreferredSize(new Dimension(123,456)); 
frame.getContentPane().add(canvas); 
... 
// At the end: 
frame.pack(); 
frame.setVisible(true); 
+0

ОК, так что вы предлагаете, что часть из Возможно, осложнение вызвано смесью awt и swing? интересно, спасибо. Я научился этому, в будущем я попытаюсь адаптироваться к обучению отображению пикселей с помощью только качания – user3251651

+0

Я не сказал этого явно, но * «Смешивание тяжеловесных и легких компонентов» * (как описано в http: // www .oracle.com/technetwork/articles/java/mix-components-433992.html) всегда немного проблематично. Он * должен * работать в целом, но не всегда работает так, как ожидалось, и я бы рекомендовал использовать только компоненты Swing – Marco13

Смежные вопросы