我有一個GUI創建JPanel和「開始」按鈕。我需要的只是當我點擊「開始」時,圖像將被加載並顯示在該JPanel上。 但我的問題是,當我點擊「開始」,什麼也沒有發生。 任何人都可以幫我解決這個問題嗎? 這是我的代碼:圖像不會出現在JPanel使用BufferedImage
private BufferedImage image;
public class ImagePanel extends JPanel {
public ImagePanel() {
try {
image = ImageIO.read(new File("C:\\Users\\HienTran\\Desktop\\Miranda-Kerr-16-240x320.jpg"));
} catch (IOException ex) {
// handle exception...
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
}
private void startBtnActionPerformed(java.awt.event.ActionEvent evt) {
stopBtn.setEnabled(true);
startBtn.setEnabled(false);
imageArea.add(new ImagePanel()); // imageArea is the JPanel in the GUI
}
當我通過如下創建一個新的JFrame,即JFrame的出現與我添加的圖像替換2行imageArea的。
private void startBtnActionPerformed(java.awt.event.ActionEvent evt) {
stopBtn.setEnabled(true);
startBtn.setEnabled(false);
JFrame test = new JFrame("Window");
test.add(new ImagePanel());
test.setSize(image.getWidth(), image.getHeight() + 30);
test.setVisible(true);
}
對不起,創建新問題:( 我按照你的說法試了JLabel,但它仍然無法解決我的問題。圖像仍然沒有顯示在JPanel –
@ user2716653說不起作用並不能提供任何信息,你需要發佈一個'SSCCE' 。 – camickr
@ user2716653 :問題可能是找不到圖像,如果是這種情況,請嘗試在catch塊中寫入'ex.printStackTrace()',並查看可能提供更多詳細信息的堆棧跟蹤(如果有的話): - ) –