0

getImageファイルを読み取って保存し、これらの画像をjpanelsの背景に設定するために使用しています。ただし、アプレットが最初に読み込まれたとき、画像は表示されません。サイズを変更するか、上下にスクロールすると、画像が表示されます。何が問題ですか?

@Override
public void init(){

    setSize(800, 600);
    setLayout(new FlowLayout());

    setup();

    box1.setText(texts[0]);
    box2.setText(texts[1]);
    box3.setText(texts[2]);
    box4.setText(texts[3]);


    add(box1);
    add(box2);
    add(box3);
    add(box4);

    add(testPanel);
    add(localPanel);
    add(background2);
}

public void setup(){


    box1 = new JTextArea();
    box2 = new JTextArea();
    box3 = new JTextArea();
    box4 = new JTextArea();


    box1.setText(texts[0]);
    box2.setText(texts[1]);
    box3.setText(texts[2]);
    box4.setText(texts[3]);

            //*********** this loads immediately **********//
    Image back2 = getImage(getDocumentBase(), "blank_blue.png");
    background2 = new JLabel(new ImageIcon(back2));

    panelBack = getImage(getDocumentBase(), "CardBar.png");

    localPanel = new JPanel(){
        @Override
        public void paintComponent(Graphics g){
            super.paintComponent(g);
            Graphics2D g2d = (Graphics2D) g;
            g2d.drawImage(panelBack, 0, 0, null);
        }
    };

    localPanel.setPreferredSize(new Dimension(100, 400));

}
4

1 に答える 1

2

コンポーネントが最初にペイントされたときに、イメージが読み取られない場合があります。試す:

//g2d.drawImage(panelBack, 0, 0, null);
g2d.drawImage(panelBack, 0, 0, this);
于 2013-07-23T01:24:59.040 に答える