我对使用swing进行java开发非常陌生,并且只有使用java编码的经验而且从不创建GUI。做了一些阅读并决定使用Swing。
现在我需要设置我的应用程序窗口,我希望窗口是一个特定的颜色,在顶部和底部有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 );
}
}
在这种情况下,您可以照常将组件添加到主面板。