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 );
}
}
В этом случае вы можете добавить компоненты на главную панель как обычно.