Вопрос

У всех, у меня есть некоторые проблемы с Java, я создал панель с пятью рядами и одним столбцом, также я добавил кнопку в один из рядов, наконец -то добавил эту панель в кадр, и я получил кнопку, которая растянута до полной кадры, может Я уменьшаю размер кнопки, я использовал

myButton.setSize(10,10);

Но, похоже, это не работает, я также использую

frame.pack();

Пусть это будет проблема, заранее спасибо

Это было полезно?

Решение

Вы должны воздерживаться от установки размера самостоятельно. Вы должны выбрать правильный LayoutManager Это делает работу для вас.

(Если вы явно не делаете setLayout(null) Размеры, которые вы установили, будут отброшены, и текущий диспетчер макетов назначит новые размеры компонентам.)

Вы говорите, что используете GridLayout. Анкет Этот макет довольно «недотечь», и если вы хотите преимущества GridLayout Но больше гибкости, вы можете дать GridBagLayout Попробуй.

Если вы не найдете менеджера макета, который соответствует вашим потребностям, не бойтесь писать свои собственные. (Это пять относительно простых методов для реализации.)

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

Некоторые полезные ссылки

Другие советы

Когда вы используете менеджеров макета (например GridLayout) тогда вызывает setSize() Как правило, не работают, потому что менеджер макетов в конечном итоге решает, как размер и размещать каждый компонент в контейнер.

Что вы можете сделать, это позвонить setPreferredSize(), setMaximumSize() и/или setMinimumSize(). Анкет В зависимости от менеджера макета, используемого, будет удостоен чести один или несколько из этих запросов (потому что это действительно то, что они есть). Когда вы звоните frame.pack() Он попытается размер всего в контейнере (и субконтатенонах) на их предпочтительные размеры.

Итак, в вашем случае, вызов myButton.setPreferredSize (10, 10); вероятно, будет работать. Тем не менее, он все равно будет изменен, если контейнер меняет размер. Если вы этого не хотите, есть другие решения, которые я могу опубликовать.

Когда у Aloobe есть более общее решение для вас. Я бы сказал, что непосредственным решением было бы добавить кнопку в JPanel, установить макет макет, как Gridlayout, или другого Layoutmanager, если вы найдете другие подходящие вам лучше.

И добавьте эту панель к исходной панели, вместо кнопки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top