簡體   English   中英

Java:在我調整窗口大小之前,圖像不會顯示

[英]Java: Image won't show until I resize the window

我在java編程,我正在進入GUI和圖形。 在我的程序中,我將圖像繪制到JPanel上,並將JPanel添加到主窗口。 我遇到的問題是,當我運行程序時,圖像不會顯示,直到我手動調整窗口大小。 這是相關代碼:

繪制圖像的位置:

public class painting extends JPanel{
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        this.setBackground(Color.WHITE);
        g.drawImage(Toolkit.getDefaultToolkit().getImage("image.png"), 0, 0, null);
    }
}

將JPanel添加到JFrame的位置(c是GridBagConstraints):

public class GUI extends JFrame{
    public GUI(){
        painting Pnt = new painting();
        c.gridx = 1;    c.gridy = 0;
        c.ipadx = 540;  c.ipady = 395;
        add(Pnt, c);        
    }
}

窗口設置的位置:

public class MainC{
    public static void main (String args[]){
        GUI gui = new GUI();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gui.pack();
        gui.setVisible(true);
        gui.setTitle("Title");
    }
}

謝謝,貝內特

編輯:我注意到它有時會正確顯示圖像,但如果我關閉程序並再試一次,直到我調整大小它才能正常工作。

EDIT2:這是文件GUI類MainC類

Toolkit.getImage()異步工作。 使用ImageIO.read()或添加MediaTracker

GUI構造函數中,您應該先調用super()。

同時移動:

gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.pack();
gui.setVisible(true);
gui.setTitle("Title");

在GUI構造函數中。

Toolkit.getDefaultToolkit().getImage("image.png")

帶給你的照片?
我嘗試過:

public class Gui extends JFrame{
public Gui() {
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLayout(new BorderLayout());
    this.setBounds(100, 100, 300, 300);
    JPanel pnl = new JPanel(){
        public void paintComponent(Graphics g){
            super.paintComponent(g);
            this.setBackground(Color.WHITE);
            try {
                g.drawImage(new Robot().createScreenCapture(new Rectangle(90, 90)), 0, 0, null);
            } catch (AWTException e) {
                e.printStackTrace();
            }
        }
    };
    getContentPane().add(pnl, BorderLayout.CENTER);
}
public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new Gui().setVisible(true);
        }
    });
}

它的工作原理。

您的問題必須在代碼中的其他位置。 我將您的三個類復制並粘貼到我的IDE中。 我唯一改變的是GUI.java我添加了setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); 然后我將圖像的位置更改為我自己的位置。 窗口按預期工作,圖像立即顯示。

我假設你沒有在這里顯示的其他代碼,例如我添加的c的初始化。 檢查您的其他代碼,確保最初不重繪您的圖像。 此外,如果您發布其他代碼,我可以幫助您確定問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM