Jave. Проблема с расширенным классом из jframe - PullRequest
0 голосов
/ 28 марта 2019

У меня проблема, когда я пытаюсь создать расширенный класс из jframe.Когда я добавлю панель к созданному классу с определенным измерением и положением, он заполнит все окно.Мой код:


package tuto;

import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class test extends JFrame{

    public test(){
        super();
        initComponents();
    }

    private void initComponents() {
        setBounds(0, 0, 1000, 618);
        panel = new JPanel();
        panel.setBounds(10, 10, 100, 100);       
        panel.setBackground(Color.blue);
        add(panel);
    }


    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new test().setVisible(true);
            }
        });
    }

    //Components
    JPanel panel;
}

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

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Если вы хотите использовать абсолютное позиционирование, вы должны установить макет в null.

setLayout (null)

Но рекомендуется взглянуть на различные макеты.Все лучше, чем нулевые макеты.

Например https://docs.oracle.com/javase/tutorial/uiswing/layout/border.html

0 голосов
/ 28 марта 2019

JFrame по умолчанию использует BorderLayout, поэтому ваш компонент заполняет весь размер окна. См. Как использовать BorderLayout для получения более подробной информации.

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

Следует помнить, что «ручное» размещение компонентов обычно не рекомендуется в большинстве случаев, вместо этого вам следует использовать один или несколько менеджеров компоновки.

В качестве общих рекомендаций вам также следует избегать расширения из контейнеров верхнего уровня, таких как JFrame, так как в нем рассматривается один вариант использования, контейнеры верхнего уровня, как правило, сложные, составные компоненты, и вы просто не добавляете никаких новый функционал для класса в целом. Лучше просто создавать их, когда они вам нужны, и заполнять их необходимыми компонентами.

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