0

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

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

谁能给我一些关于我将如何解决这个问题的提示?

谢谢

4

2 回答 2

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 );
    }
}

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

于 2014-08-18T09:25:26.683 回答
0

您几乎总是希望将BorderLayout作为表示您的应用程序的第一步。

您可以创建JPanel,设置它们的背景颜色,然后使用 BorderLayout 将它们添加到 North 和 South。

确保将 JPanel 上的最小高度设置为某个值,否则您将看不到任何东西。如果您希望两个 JPanel 相互叠置(在顶部和底部),那么您可以在北部嵌入一个 Borderlayout,在南部嵌入一个,每个面板都有一个北面和一个南面。

只要为 JPanel 正确定义了高度,它就应该可以工作。

于 2014-08-14T09:14:42.930 回答