Невозможно размер JButton - PullRequest
0 голосов
/ 05 июля 2011

Я пытаюсь добавить кнопку в мой JFrame. Я не могу назначить JButton определенного размера.

Я пытался

mJButtonOne.setPreferredSize
mjButtonOne.setMinimum/maximum
mjBUttonOne.setSize

Независимо от того, что я пробую, кнопка всегда загружает полный экран.

Вот мой код, я использую несколько методов: make, build и dostuff.

private void make() {
    this.mJLabelTime = new JLabel("");
    this.mJButtonOne = new JButton("");
//I have tried setting size in do stuff as well.

      }

private void build(){
    this.add(this.mJLabelTime);
    this.add(this.mJButtonOne);

     }

private void doStuff(){

    this.mJLabelTime.setText(Customtime.time("HH:mm:ss"));
    this.mJButtonOne.setText("BUTTON!");
    this.mJButtonOne.setPreferredSize(new Dimension(1, 10));

Мой Main выглядит следующим образом.

public static void main(String[] args) {
    View view = new View();
       view.setMaximumSize(new Dimension(200, 200));
       view.setMinimumSize(new Dimension(200, 200));
    view.setVisible(true);
System.out.println("Running app..."); 
//System.out.println("Goodbye World");    
}

Ответы [ 2 ]

3 голосов
/ 05 июля 2011

Если вы не используете LayoutManager, вызовите setLayout(null) для вашего View класса.

Но рекомендуется выбрать и использовать менеджер макетов, и пусть менеджер компоновки позаботится о подборе размеров компонентов.

2 голосов
/ 05 июля 2011

Обычно менеджер компоновки учитывает размеры, которые вы передаете setPreferredSize(...).

ПРИМЕР

public class View {

    public static void main(String[] args){
        SwingUtilities.invokeLater(new Runnable(){
            @Override
            public void run() {
                createAndShowGUI();
            }
        });
    }

    private static void createAndShowGUI(){
        final JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final JPanel panel = new JPanel(){
            @Override
            public Dimension getPreferredSize(){
                return new Dimension(200, 200);
            }
        };
        final JButton button = new JButton("Button"){
            @Override
            public Dimension getPreferredSize(){
                return new Dimension(100, 20);
            }
        };
        panel.add(button);
        frame.add(panel);

        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

ВЫХОД

enter image description here

РЕДАКТИРОВАТЬ

Вместо добавления компонентов непосредственно в JFrame, добавьте их в JPanel,и затем добавьте JPanel к JFrame.Обратите внимание, что JPanel по умолчанию макет потока .

...