0
我想用文本和圖像GIF顯示JLabel。當我從Test類調用showLabel()方法時,我只能看到文本。我不知道如何刷新這個圖像來顯示它。我讀的是在這種情況下AWT的問題...刷新JFrame上的圖像
問:如何在我的JLabel中顯示此GIF圖像?
LabelTest.class
public class LabelTest{
private JWindow frame;
private JLabel jLabel;
ImageIcon icon = new ImageIcon("PHOTO.gif");
public LabelTest() {
}
public void showLabel(String label) {
frame = new JWindow();
frame.setAlwaysOnTop(true);
frame.setBackground(new Color(255, 255, 255));
frame.setContentPane(new TranslucentPane());
frame.add(new JLabel(label, icon, JLabel.CENTER));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.paintAll(frame.getGraphics());
}
public void hideLabel() {
frame.dispose();
}
}
的Test.class
public class Test {
public static void main(String[] args){
try {
LabelTest p = new LabelTest();
p.showLabel("I'M LABEL...");
Thread.sleep(5000);
p.hideLabel();
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}
TranslucentPane.class
public class TranslucentPane extends JPanel {
public TranslucentPane() {
setOpaque(true);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
}
}
貌似程序無法找到圖片; 「PHOTO.gif」位於何處?如果它在項目的'src'文件夾中,則使用'getClass()。getResource(「PHOTO.gif」)'。如果它不在您的項目中,您必須輸入圖像的完整路徑作爲參數。 (例如'c:\\ temp \\ PHOTO.gif') –
「TranslucentPane」類沒有必要。您尚未更改任何JPanel的默認行爲。 JPanel默認是不透明的。擺脫那個階級。 – camickr