레이블 텍스트가있는 Java 응용 프로그램이 있으며 실제로 남아있는 하드 디스크 공간을 보여줍니다. 또 다른 클래스 인 "Runnable"을 만들었습니다.이 클래스는 HDD에 남은 공간을 X 초마다 읽습니다.HDD 공간 모니터링 ... 실시간으로 정보를 표시하는 방법은 무엇입니까?
내 문제 : JFrame의 "정적"레이블에 그 정보를 어떻게 표시 할 수 있습니까? 내가 생각해야 할 가장 가까운 것은 "double"숫자를 반환하는 "runneable"클래스의 함수를 만들고, 그 클래스는 JFrame
에있다.하지만 JFrame은 그 라인을 한 번만 실행하고 암호.
어떻게 모니터링합니까? 나는 다른 변수들도 모니터하고 싶다. 그러나 이것은 시작이다.
코드 : 읽으려면
package gwcontrol;
import java.io.File;
public class Analisis implements Runnable{
long delay;
File file = new File("C:\\");
float FreeSpace;
float TotalSpace;
public Analisis(long delay){
this.delay = delay;
//setDaemon(true);
}
public void run(){
try {
while (true) {
this.FreeSpace = (float) file.getFreeSpace()/1024/1024/1024;
System.out.println("Espacio libre: " + this.FreeSpace);
Thread.sleep(this.delay);
}
} catch (InterruptedException e) {
//System.out.println("Error" + e);
}
}
public float getFreeSpace(){
return this.FreeSpace;
}
public float getTotalSpace(){
return this.TotalSpace;
}
}
코드 HDD 공간 : 그래픽 사용자 인터페이스 (모든 코드, 그냥 필요 IMO)
public class ControlGUI extends javax.swing.JFrame {
/** Creates new form ControlGUI */
public Analisis analisis = new Analisis(1000);
public ControlGUI() {
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch (Exception e){
System.err.println(e);
}
new Thread(analisis).start();
File file = new File("C:\\");
float FreeSpace = (float) file.getFreeSpace()/1024/1024/1024;
float TotalSpace = (float) file.getTotalSpace()/1024/1024/1024;
float UsedSpace = TotalSpace - FreeSpace;
setTitle("GWControl - A+V - v.1.0");
initComponents();
jProgressBar1.setMaximum((int)TotalSpace);
jProgressBar1.setMinimum(0);
jProgressBar1.setValue((int)UsedSpace);
lbl_espacio_libre.setText("HDD: " + analisis.getFreeSpace() + " Mb libres");
lbl_porcentaje_espacio.setText(UsedSpace*100/TotalSpace + "% del disco utilizado");
}
감사합니다!
업데이트 코드
: 생성자 내부
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ControlGUI control = new ControlGUI();
control.setVisible(true);
}
});
}
및 :
ControlGUI.java에서:
this.updateProgress(analisis.getFreeSpace());
HERE를 읽어, 나는 이러한 변경을
[...]
private void updateProgress(final double numero) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
lbl_espacio_libre.setText("HDD: " + numero + " Mb libres");
}
});
}
나는 아직 =/
당신이 백그라운드에서 실행되는 별도의 스레드를 만들 필요가
당신이 몇 가지 코드를 게시 할 수에 대한 @jtahlborn하는? – Kaj