Управление компонентами в JFrame - PullRequest
1 голос
/ 08 августа 2011

Я изо всех сил пытаюсь контролировать свои компоненты.У меня есть JFrame, который содержит JPanel.Мои компоненты, такие как JLabel и JTextArea, добавлены в эту панель.Итак, мой вопрос:

Как я могу управлять этими компонентами?Я пытался использовать

GridBagConstraints constraints = new GridBagConstraints(); constraints.gridx = 1;

Но, похоже, это не работает ..

Вот моя функция инициализации моего графического интерфейса:

public void initGUI()
{

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();  

    final JFrame frame = new JFrame("instantINFO!");
                 frame.setSize(screenSize.width, screenSize.height); 
                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                 frame.setLayout(new GridBagLayout()); 

    final JPanel panel = new JPanel();

    weather = new JTextArea(vær, 6, 20);
    weather.setFont(new Font("Arial", Font.BOLD, 16));
    weather.setLineWrap(true);
    weather.setWrapStyleWord(true);
    weather.setOpaque(false);
    weather.setEditable(false);

    stedLabel = new JLabel(sted);
    dagLabel = new JLabel(dag);

    panel.add(weather);
    panel.add(stedLabel); 
    panel.add(dagLabel); 

    frame.add(panel);
    frame.setVisible(true);

}

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

Ответы [ 3 ]

4 голосов
/ 08 августа 2011

JPanel по умолчанию использует FlowLayout. И по умолчанию компоненты на панели расположены по центру. Если вы хотите, чтобы компоненты были выровнены по левому краю, вам нужно изменить макет потока, чтобы выровнять компоненты по левому краю. Прочитайте API FlowLayout, чтобы узнать, как это сделать.

Я также предлагаю вам взглянуть на учебник по Swing на Использование менеджеров макетов для рабочих примеров.

2 голосов
/ 08 августа 2011

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

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

Чтобы управлять расположением компонента по пикселям, вы можете использовать метод setLocation (), но тогда вам следует установить абсолютное расположение или просто установить нулевое расположение компонентов, которое поддерживает управление местоположением x, y

код вроде

aPanel.setLayout(null);
...
aButton.setLocation(10,3);
aPanel.add(aButton);

Мне понравился пример контроля абсолютной позиции, поэтому я хочу поделиться им пример посмотреть его, чтобы увидеть концепцию

Удачи:)

1 голос
/ 09 августа 2011

как уже упоминалось в других ответах, вы должны выучить менеджеров по раскладке. вы можете сделать эту работу за вас, используя java IDE GUI дизайнеров. NetBeans имеет конструктор Swing GUI , который можно использовать для создания компонентов, перетащив n drop.

последняя версия eclipse Indigo теперь поставляется с замечательным WindowBuilder инструментом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...