Swing - как добавить полосу цвета в окне приложения

Я очень плохо знаком с использованием Swing для разработки Java, и у меня был только опыт написания кода в Java и никогда не создавал GUI. Прочитал немного и решил пойти с Swing.

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

Кто-нибудь может дать мне несколько советов о том, как мне поступить об этом?

Спасибо

2 ответа

Почти всегда вы захотите использовать BorderLayout в качестве первого шага в представлении вашего приложения.

Вы можете создавать JPanels, устанавливать их фоновые цвета, а затем с помощью BorderLayout добавлять их на север и юг.

Убедитесь, что вы установили минимальную высоту на JPanel, иначе вы ничего не увидите. Если вы хотите, чтобы два JPanel располагались друг над другом (сверху и снизу), вы можете встроить Borderlayout на севере и один на юге, у каждого из которых есть панель на север и один на юг.

Пока высота была правильно определена для JPanel, она должна работать.

Как уже говорилось, вы можете создать древовидную иерархию панелей (компонентов), каждая из которых устанавливает свой цвет фона в соответствии с вашими предпочтениями. Недостатком этого подхода является то, что будет сложнее размещать компоненты над этим деревом. Тем не менее, вы всегда можете переопределить JPCelel paintComponent для рисования, что вы хотите. Например:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Test extends JFrame
{
    public Test()
    {
        super( "Test" );

        JPanel mainPanel = new BackgroundPanel();
        mainPanel.setPreferredSize( new Dimension( 400, 300 ) );

        getContentPane().add( mainPanel );
        pack();
        setLocationRelativeTo( null );
        setDefaultCloseOperation( EXIT_ON_CLOSE );

        setVisible( true );
    }

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

}

class BackgroundPanel extends JPanel
{
    @Override
    protected void paintComponent( Graphics g )
    {
        g.setColor( Color.RED );
        g.fillRect( 0, 0, getWidth(), 20 );
        g.setColor( Color.BLUE );
        g.fillRect( 0, getHeight() - 20, getWidth(), 20 );
    }
}

В этом случае вы можете добавить компоненты на главную панель как обычно.

Другие вопросы по тегам