我有一個JFrame
,在標題欄(左上角)顯示Java圖標。 我想將該圖標更改爲我的自定義圖標。我應該怎麼做?如何更改JFrame圖標
回答
創建一個新的ImageIcon
對象是這樣的:
ImageIcon img = new ImageIcon(pathToFileOnDisk);
然後將其設置爲你的JFrame
與setIconImage()
:
myFrame.setIconImage(img.getImage());
也會檢出setIconImages()
,這需要List
代替。
JFrame.setIconImage(Image image)
非常標準。
這些解決方案不起作用。 – 2013-05-11 20:26:38
這是我如何做到這一點:
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import java.io.File;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class MainFrame implements ActionListener{
/**
*
*/
/**
* @param args
*/
public static void main(String[] args) {
String appdata = System.getenv("APPDATA");
String iconPath = appdata + "\\JAPP_icon.png";
File icon = new File(iconPath);
if(!icon.exists()){
FileDownloaderNEW fd = new FileDownloaderNEW();
fd.download("http://icons.iconarchive.com/icons/artua/mac/512/Setting-icon.png", iconPath, false, false);
}
JFrame frm = new JFrame("Test");
ImageIcon imgicon = new ImageIcon(iconPath);
JButton bttn = new JButton("Kill");
MainFrame frame = new MainFrame();
bttn.addActionListener(frame);
frm.add(bttn);
frm.setIconImage(imgicon.getImage());
frm.setSize(100, 100);
frm.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
而這裏下載:
import java.awt.GridLayout;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
public class FileDownloaderNEW extends JFrame {
private static final long serialVersionUID = 1L;
public static void download(String a1, String a2, boolean showUI, boolean exit)
throws Exception
{
String site = a1;
String filename = a2;
JFrame frm = new JFrame("Download Progress");
JProgressBar current = new JProgressBar(0, 100);
JProgressBar DownloadProg = new JProgressBar(0, 100);
JLabel downloadSize = new JLabel();
current.setSize(50, 50);
current.setValue(43);
current.setStringPainted(true);
frm.add(downloadSize);
frm.add(current);
frm.add(DownloadProg);
frm.setVisible(showUI);
frm.setLayout(new GridLayout(1, 3, 5, 5));
frm.pack();
frm.setDefaultCloseOperation(3);
try
{
URL url = new URL(site);
HttpURLConnection connection =
(HttpURLConnection)url.openConnection();
int filesize = connection.getContentLength();
float totalDataRead = 0.0F;
BufferedInputStream in = new BufferedInputStream(connection.getInputStream());
FileOutputStream fos = new FileOutputStream(filename);
BufferedOutputStream bout = new BufferedOutputStream(fos, 1024);
byte[] data = new byte[1024];
int i = 0;
while ((i = in.read(data, 0, 1024)) >= 0)
{
totalDataRead += i;
float prog = 100.0F - totalDataRead * 100.0F/filesize;
DownloadProg.setValue((int)prog);
bout.write(data, 0, i);
float Percent = totalDataRead * 100.0F/filesize;
current.setValue((int)Percent);
double kbSize = filesize/1000;
String unit = "kb";
double Size;
if (kbSize > 999.0D) {
Size = kbSize/1000.0D;
unit = "mb";
} else {
Size = kbSize;
}
downloadSize.setText("Filesize: " + Double.toString(Size) + unit);
}
bout.close();
in.close();
System.out.println("Took " + System.nanoTime()/1000000000L/10000L + " seconds");
}
catch (Exception e)
{
JOptionPane.showConfirmDialog(
null, e.getMessage(), "Error",
-1);
} finally {
if(exit = true){
System.exit(128);
}
}
}
}
'imgicon。的getImage()'是什麼,我需要感謝 – shareef 2016-05-14 07:55:19
這裏是爲我工作的一種選擇:
yourFrame.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource(Filepath)));
它非常類似於到被接受的答案。
,回答瞭如何使用圖像,如果它是一個資源的唯一一個。 :D – 2016-08-16 13:50:09
不幸的是,上面的解決方案並不適用於Jython斐濟插件。我必須使用getProperty動態構建相對路徑。
下面是我工作:
import java.lang.System.getProperty;
import javax.swing.JFrame;
import javax.swing.ImageIcon;
frame = JFrame("Test")
icon = ImageIcon(getProperty('fiji.dir') + '/path/relative2Fiji/icon.png')
frame.setIconImage(icon.getImage());
frame.setVisible(True)
只需添加以下代碼:
setIconImage(新的ImageIcon(PathOfFile).getImage());
這奏效了我的情況super
或this
referes到JFrame
在我的課
URL url = getClass().getResource("gfx/hi_20px.png");
ImageIcon imgicon = new ImageIcon(url);
super.setIconImage(imgicon.getImage());
你並不需要在你的情況下,超級本或實施。你可以放棄它。 – creativecreatorormaybenot 2016-07-02 19:18:57
可能你是對的這取決於你的產業設計 – shareef 2016-07-02 19:25:44
如果擴展類是不是真的有必要。 – creativecreatorormaybenot 2016-07-02 19:40:38
在構造函數中添加以下代碼,像這樣:
public Calculator() {
initComponents();
//the code to be added this.setIconImage(newImageIcon(getClass().getResource("color.png")).getImage()); }
更改 「color.png」添加到要插入的圖片的文件名。 將此圖片拖放到項目的包裝(源包裝下)。
運行您的項目。
- 1. 如何更改JFrame中的java圖標
- 2. Swing:更改jframe的圖標
- 3. 如何更改JFrame標題的字體?
- 4. 如何從JPanel swing更改JFrame標籤
- 5. NullPointerException當試圖更改JFrame的標題
- 6. 更改Java JFrame的圖塊
- 7. 如何放置JFrame圖標
- 8. 如何更改pygame圖標?
- 9. 如何更改Firefox圖標?
- 10. 如何更改鼠標光標圖標?
- 11. 從其他類更改JFrame的標題
- 12. 如何更改JFrame內部的JPanel?
- 13. 如何更改JFrame的形狀?
- 14. 如何更改JFrame的背景顏色
- 15. 如何更改JFrame中JLabel的位置?
- 16. 如何更改jframe的背景色
- 17. 如何更改NetBeans中的jFrame名稱
- 18. 如何使JRadioButtons更改屬性(JFrame)?
- 19. 如何動態更改JFrame背景?
- 20. 如何更改標記圖標?
- 21. 如何更改標題圖標?
- 22. 如何更改標題欄圖標?
- 23. 如何更改cpanel圖標的標籤?
- 24. 如何更改openlayers標記圖標?
- 25. 如何更改鼠標上的圖標?
- 26. 試圖從線程更改JFrame的標題?
- 27. 更改jframe中圖標的大小和形狀
- 28. 如何更改圖標圖片
- 29. 如何更改UItabbar圖標圖像?
- 30. 如何使用JButton在JFrame中更改背景圖像?
我敢打賭,在大多數情況下,這些人甚至還沒有聽說過API。像這樣的情況下,最好的解決方案可能是提供一個鏈接到API與答案。 – Carlos 2009-10-24 23:54:51