2

JPanel上に配置された背景画像の上に、作成したコンボボックスを配置できないかと思っていました。私はこれをやろうとしていますが、背景画像がコンボボックスと重なっていると思うので表示されません。JPanel 上にコンボ ボックスを配置し、ボックス レイアウトを使用して背景画像を配置するきれいな方法は誰でも知っています。

4

2 に答える 2

1

別のアプローチ、そしておそらくもっと使用されている方法では、画像をオーバーライドしてs オブジェクトJPanel paintComponentに直接描画します。Graphic

JFrame frame=...;

final BufferedImage bg=ImageIO.read(new URL("http://cs.anu.edu.au/student/comp6700/icons/DukeWithHelmet.png"));

JPanel p=new JPanel() {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        Graphics2D g2d=(Graphics2D)g;
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);

        g2d.drawImage(bg,0,0,null);
    }

    @Override
    public Dimension getPreferredSize() {//so our JPanel will fit the image entirely
        return new Dimension(bg.getWidth(),bg.getHeight());
    } 
};

frame.add(p);
frame.pack();
frame.setVisible(true);
于 2013-01-09T22:13:21.830 に答える
1

setComponentZOrder() メソッドを使用する必要があると思います。

以下に例を示します: http://weblogs.java.net/blog/2009/01/21/swing-internals-paint-order

(詳細については JavaDoc を確認してください: setComponentZOrder() メソッド

于 2013-01-09T21:02:03.447 に答える