Şu anda bir sorun yaşıyorum çünkü her şey düzgün çalışıyor ve sadece kolay bir sistem saati ve tarih kurulumu oluşturmak için bir kod ile deney yapıyordum. Bir şekilde tamir edebilecek bir sorunum var. Bu yüzden bir etiket belirledim (JLabel değil) ve çalıştırılabilir bir boşlukla çalıştırmayı denediğimde, sistemin tam zamanını güncellemek için metni ayarlamaya çalıştığımda hata görünüyor. Yani örnekte Time.setText (zaman); zaman bir dize olarak tanımlanacak ama sadece hatalar ve işe yaramıyor.Neden bir runnable kullanırken Etiketim Java SWT Gui uygulamam için değişmiyor?
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
public class HomeScreen {
protected Shell shell;
private Label Date;
private Label Time;
private Composite composite;
/**
* Launch the application.
* @param args
*/
public static void main(String[] args) {
try {
HomeScreen window = new HomeScreen();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Open the window.
*/
public void open() {
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
Date();
Time();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
/**
* Create contents of the window.
*/
protected void createContents() {
shell = new Shell();
shell.setSize(450, 300);
shell.setText("Project Serenity");
composite = new Composite(shell, SWT.NONE);
composite.setBounds(0, 0, 470, 278);
Time = new Label(composite, SWT.NONE);
Time.setLocation(10, 192);
Time.setSize(169, 31);
Time.setText("Time");
Date = new Label(composite, SWT.NONE);
Date.setLocation(10, 217);
Date.setSize(169, 38);
Date.setText("Date");
}
public void Date()
{
Thread Date2 = new Thread()
{
@Override
public void run()
{
try {
for(;;){
Calendar cal = new GregorianCalendar();
int day = cal.get(Calendar.DAY_OF_MONTH);
int month = cal.get(Calendar.MONTH);
int year = cal.get(Calendar.YEAR);
Time.setText(day + ", " + month + " " + year);
sleep(1000);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
Date2.start();
}
public void Time()
{
Thread Time2 = new Thread()
{
@Override
public void run()
{
try {
for(;;){
Calendar cal = new GregorianCalendar();
int second = cal.get(Calendar.SECOND);
int minute = cal.get(Calendar.MINUTE);
int hour = cal.get(Calendar.HOUR);
int am_pm = cal.get(Calendar.AM_PM);
sleep(1000);
Time.setText(hour + ":" + minute + ":" + second + " " + am_pm);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
Time2.start();
}
}
@Pixlation Aynı argüman, yöntem adları için de geçerlidir. – Baz
Baz tamam evet, bu mantıklı geliyor – Pixlation
Uygulamayı kapattığımda da hatalar atılıyor ... – Pixlation