2014-12-13 3 views
2

Как предотвратить кнопку с UpSize? Я использую вертикальную коробку с двумя строками, в первой строке → горизонтальная коробка со многими элементами управления, во второй строке → кнопка, но кнопка очень увеличена, как предотвратить это раздражающее поведение?Java. Предотвращение увеличения кнопки

Я пытался установить максимальный размер кнопки, это работает, но как правильно рассчитать этот размер?

Извините, я плохо говорю по-английски.

Пример:

import java.awt.Button; 
import java.awt.Frame; 
import java.awt.Label; 
import javax.swing.Box; 
import javax.swing.BoxLayout; 
import javax.swing.JProgressBar; 
import javax.swing.JSpinner; 
import javax.swing.SpinnerModel; 
import javax.swing.SpinnerNumberModel; 

public class TEST{ 
    public static void main(String[] args){ 
     Frame mainWindow = new Frame("hello"); 
     Box vertBox = new Box(BoxLayout.Y_AXIS); 
     mainWindow.add(vertBox); 

     Box firstLine = new Box(BoxLayout.X_AXIS); 
     vertBox.add(firstLine); 
     SpinnerModel sm = new SpinnerNumberModel(100, 0, 200, 1); 
     for(int i = 0; i < 10; i++){ 
      firstLine.add(new JSpinner(sm)); 
      firstLine.add(new Label("Hello")); 
     } 

     Box secondLine = new Box(BoxLayout.X_AXIS); 
     vertBox.add(secondLine); 
     secondLine.add(new JProgressBar()); 
     secondLine.add(new Button("RUN-THIS")); 

     mainWindow.pack(); 
     mainWindow.setVisible(true); 
    } 
} 
+1

Вы хотите показать нам код? Sidenote: Эй, вы используете капитал I, вы лучше говорите по-английски, чем некоторые (английские) люди здесь, в Интернете. – Charlie

+0

Менеджер компоновки (класс, расширяющий LayoutManager) является ответственным за установку размера и положения всех компонентов (кнопок в этом случае), которые были добавлены в контейнер. Каждая специализация LayoutManager имеет свой собственный способ сделать это. Например, GridLayout будет равномерно распределять доступное пространство в контейнере среди компонентов, растягивая или сокращая их соответственно. Другие менеджеры компоновки, такие как FlowLayout, не изменят размеры компонентов. Но поскольку @Charlie просто сказал, что это трудно сделать, не видя свой код. – ulix

+0

Видя весь ваш импорт, не 'import java.awt. *; import javax.swing. *; 'намного лучше? – Charlie

ответ

2

Кнопка, но кнопки очень увеличены, как предотвратить это раздражающее поведение?

Не используйте AWT-компоненты в приложении Swing!

Детали качания начинаются с буквы "J". Вы должны использовать JFrame, JLabel, JButton. Это устранит вашу проблему. JButton автоматически рассчитает максимальный размер, равный предпочитаемому размеру, и BoxLayout будет уважать это.

Кроме того, имя класса должно начинаться только с одного символа верхнего регистра. «ТЕСТ» должен быть «Test».

+0

Спасибо, когда я заменил компоненты AWT Swing, эта проблема исчезла. – biv

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