.setBounds не относится к JLabel? - PullRequest
0 голосов
/ 27 апреля 2018

У меня проблемы с применением .setBounds к JLabel. Он работает с предыдущим JLabel, который я определил, но полностью игнорирует мое второе определение границ. Я немного испортил ширину и высоту, чтобы посмотреть, влияет ли это на JLabel, и это не так. Кроме того, я заметил, что при изменении двух моих JLabels ярлык "greet" больше не появлялся. Вот мой код, любая помощь приветствуется: ^)

import java.awt.Color;
import java.awt.Font;

import javax.swing.*;

public class Fashion {
    static JFrame f = new JFrame("Game Title");
    static Font h1 = new Font("courier", Font.PLAIN, 30);
    static Font h2 = new Font("courier", Font.PLAIN, 17);

    public static void main(String[] args) {
        f.setSize(1400, 900);
        f.setResizable(false);
        f.getContentPane().setBackground(Color.WHITE);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


        JLabel title = new JLabel("Welcome!");
        title.setFont(h1);

        JLabel greet = new JLabel("Lets get started.");
        greet.setFont(h2);

        title.setBounds(225,1,1000,100);
        greet.setBounds(350,200,1,1);

        f.add(title);
        f.add(greet);


        f.setVisible(true);

    }

}

(игнорируйте очень уродливые границы / расположение, они странно специфичны, но это то, что хочет мой профессор: /)

1 Ответ

0 голосов
/ 27 апреля 2018

У меня проблемы с применением .setBounds к JLabel. Он работает с предыдущим JLabel, который я определил, но полностью игнорирует мое второе определение границ.

Оба ваших оператора setBounds (...) игнорируются.

Swing использует менеджеры компоновки, чтобы установить размер и расположение компонентов. Даже если вы попытаетесь установить границы, менеджер компоновки переопределит значения размера / местоположения на основе правил диспетчера компоновки.

Кроме того, я заметил, что при изменении двух моих JLabels ярлык "greet" больше не появляется

Это потому, что вы добавляете оба компонента в CENTER BorderLayout (который является менеджером по умолчанию для панели содержимого фрейма). Может быть отображен только один компонент, поэтому виден только последний добавленный компонент.

Решение вашей проблемы состоит в том, чтобы научиться правильно пользоваться менеджером компоновки. Прочтите раздел из руководства по Swing по Layout Manager для получения дополнительной информации и примеров, с чего можно начать.

Менеджер макетов по умолчанию - FlowLayout

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