반응형
JFrame 아이콘 변경 방법
나는 가지고 있다JFrame
제목 표시줄(왼쪽 모서리)에 Java 아이콘이 표시됩니다.나는 그 아이콘을 나의 커스텀 아이콘으로 바꾸고 싶다.어떻게 하면 좋을까요?
신규 작성ImageIcon
다음과 같은 객체:
ImageIcon img = new ImageIcon(pathToFileOnDisk);
그리고 나서 그것을 당신의JFrame
다음과 같이 설정합니다.
myFrame.setIconImage(img.getImage());
또한 체크 아웃이 필요한 경우List
대신.
다음은 나에게 효과가 있었던 대안입니다.
yourFrame.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource(Filepath)));
이는 수용된 답변과 매우 유사합니다.
JFrame.setIconImage(Image image)
꽤 표준적이네요
방법은 다음과 같습니다.
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);
}
}
}
}
다음 코드를 추가합니다.
setIconImage(new ImageIcon(PathOfFile).getImage());
안타깝게도 위의 솔루션은 Jython Piji 플러그인에서는 작동하지 않았습니다.상대 경로를 동적으로 구축하기 위해 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)
이게 내 경우엔 효과가 있었어super
또는this
에 언급하다JFrame
우리 반에서
URL url = getClass().getResource("gfx/hi_20px.png");
ImageIcon imgicon = new ImageIcon(url);
super.setIconImage(imgicon.getImage());
다음과 같이 컨스트럭터 내에 다음 코드를 추가합니다.
public Calculator() {
initComponents();
//the code to be added this.setIconImage(newImageIcon(getClass().getResource("color.png")).getImage()); }
"color.png"를 삽입할 사진의 파일 이름으로 변경합니다.이 그림을 프로젝트의 패키지(소스 패키지 아래)에 끌어다 놓으십시오.
프로젝트를 실행합니다.
언급URL : https://stackoverflow.com/questions/1614772/how-to-change-jframe-icon
반응형
'programing' 카테고리의 다른 글
PHP 응용 프로그램에서 다중 스레딩을 사용하려면 어떻게 해야 합니까? (0) | 2023.01.02 |
---|---|
MySQL 쉼표로 구분된 두 테이블 결합 (0) | 2023.01.02 |
MariaDB: 수십억 개의 레코드를 갱신하는 최적의 방법 (0) | 2023.01.02 |
'모듈 가져오기' 또는 '모듈 가져오기'를 사용하시겠습니까? (0) | 2023.01.02 |
모든 좋은 PHP 개발자가 대답할 수 있는 질문 (0) | 2022.12.28 |