2014-12-28 3 views
-2

Я студент информатики. Я должен написать java-программу. Две кнопки в окне и щелчок по одному из них делают шрифт кнопки больше +1, поэтому кнопки/кнопки становятся больше, и они должны вставляться в окно (видимы целые две кнопки), поэтому окно может увеличиться, НО ТОЛЬКО КАК МНОГО КАК НЕОБХОДИМО. Это довольно легко с пакетом(), но метод call pack() не разрешен. Любые подсказки?Изменение размера JFrame без пакета() заставляет мой разум взорваться. Непонятно

+0

Никто не собирается делать домашнее задание для вас. – worldofjr

+0

Я этого не ожидаю. Я потратил много времени, пытаясь решить проблему самостоятельно, и все, что я ожидаю, - это своего рода ключ, помогающий мне писать программу самостоятельно. – Baldur

+0

Вам необходимо определить область видимости, то есть область с границами рамки. Затем вам нужно определить границу рамки и добавить ее в расчет ширины/высоты. Вы можете определить объем пространства, который может понравиться кнопке, вызвав метод getPreferredSize – MadProgrammer

ответ

1

Простым решением является, как только вы обновили шрифт кнопок, находится в revalidate контейнере, спросите контейнер для него: preferredSize. После того как вы это, вам нужно добавить в insets окна к этому значению, которое даст вам минимальный размер, что окно нужно будет ...

// Update button fonts... 
container.revalidate(); // Force the container with the buttons to update 
Dimension size = container.getPreferredSize(); 
Insets insets = frame.getInsets(); // Returns the frame's border requirements 
size.width += insets.left + insets.right;  
size.height += insets.top + insets.bottom; 
frame.setSize(size); 

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

+1

Я понял, что вы. Я могу рассчитать разницу до и после изменения размера, а затем добавить его к размеру Jframe. Может быть интересно, что изменение ширины на 5 или 6 и высота на 1 или 2, когда размер шрифта изменяется на 1. Это не является постоянной причиной non-fracture характер Integer. Ваше решение выглядит более зрелым и профессиональным, поэтому я узнаю его :) Спасибо за быстрый и точный ответ. Первое сообщение здесь и приятный сюрприз. Я помогу другим, когда я получу экзамен. – Baldur

+0

Рад, что это помогло ... – MadProgrammer

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