Swing - 如何在应用程序窗口中添加颜色带

时间:2014-08-14 09:10:52

标签: java swing swingbuilder

我对使用swing进行java开发非常陌生,并且只有使用java编码的经验而且从不创建GUI。做了一些阅读并决定使用Swing。

现在我需要设置我的应用程序窗口,我希望窗口是一个特定的颜色,在顶部和底部有2个另一种颜色的条带,窗口内的其他区域再次成为另一种颜色。

任何人都可以给我一些关于如何解决这个问题的提示吗?

由于

2 个答案:

答案 0 :(得分:0)

作为表示应用程序的第一步,您几乎总是想要 BorderLayout

您可以创建 JPanels ,设置背景颜色,然后使用BorderLayout将它们添加到北方和南方。

确保将JPanel上的最小高度设置为某物,否则您将看不到任何内容。如果你想要两个JPanels(在顶部和底部),那么你可以在北部嵌入一个Borderlayout,在南部嵌入一个,每个都有一个面板向北,一个面向南。

只要为JPanel正确定义了高度,它就应该有效。

答案 1 :(得分:0)

如前所述,您可以创建一个树状的面板(组件)层次结构,每个面板(组件)将其背景颜色设置为您想要的任何颜色。 这种方法的缺点是在这棵树上放置组件会更加困难。 但是,您始终可以覆盖 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 );
    }
}

在这种情况下,您可以照常将组件添加到主面板。