我对使用 swing 进行 Java 开发非常陌生,并且只有 Java 编码经验,从未创建过 GUI。做了一些阅读并决定使用 Swing。
现在我需要设置我的应用程序窗口,我希望窗口是一种特定的颜色,顶部和底部有 2 个另一种颜色的带,窗口内的其他区域再次成为另一种颜色。
谁能给我一些关于我将如何解决这个问题的提示?
谢谢
我对使用 swing 进行 Java 开发非常陌生,并且只有 Java 编码经验,从未创建过 GUI。做了一些阅读并决定使用 Swing。
现在我需要设置我的应用程序窗口,我希望窗口是一种特定的颜色,顶部和底部有 2 个另一种颜色的带,窗口内的其他区域再次成为另一种颜色。
谁能给我一些关于我将如何解决这个问题的提示?
谢谢
如前所述,您可以创建面板(组件)的树状层次结构,每个面板(组件)将其背景颜色设置为您想要的任何颜色。这种方法的缺点是在这棵树上放置组件会更加困难。但是,您始终可以覆盖JPanel 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 );
}
}
在这种情况下,您可以像往常一样将组件添加到主面板。
您几乎总是希望将BorderLayout作为表示您的应用程序的第一步。
您可以创建JPanel,设置它们的背景颜色,然后使用 BorderLayout 将它们添加到 North 和 South。
确保将 JPanel 上的最小高度设置为某个值,否则您将看不到任何东西。如果您希望两个 JPanel 相互叠置(在顶部和底部),那么您可以在北部嵌入一个 Borderlayout,在南部嵌入一个,每个面板都有一个北面和一个南面。
只要为 JPanel 正确定义了高度,它就应该可以工作。