Bir iletişim kutusu oluşturan bir program yapmaya çalışıyorum, asal numaralar ise ilk n numaralarını (aşağıdaki kodda int tarafından belirtilen) denetler ve sonra yazdırır böyle penceresine çıktı: doğru 3 - - Gerçek 4 - Yanlış 5 - - 2 GerçekLive-update, dinamik içerik pencereleri Java
1 vs Gerçek
...
Dinamik ve canlı (yani canlandırıcı) nasıl yapılacağını bulmakta zorluk çekiyordum ama başka bir forumdaki bir kişi Jlist kullanarak ve içerik olarak ayarladı ve ben de (aşağıda görebileceğin gibi) bunu yapabildim, ama ...
- Pencere yaklaşık 700x700 değil ve liste de değil.
- Liste boş ya da en azından ben öyle düşünüyorum, çünkü tüm aldığım varsayılan boyutta bir pencere ve tek içerik olarak beyaz bir çizgi.
Kodu:
while (y<100){
if (isPrime(z) == true){
NumberStr += z + " true";
} else {
NumberStr += z + " false";
}
y++;
z++;
}
ama onlarla hiçbir şey yapıyoruz, böylece hiçbir şey gösterecektir:
import javax.swing.JOptionPane;
import java.awt.Dimension;
import javax.swing.DefaultListModel;
import javax.swing.JList;
public class main {
@SuppressWarnings("unused")
public static void main(String[] args) {
//make new string jlist, add numstr to it, and set list as contents
of window.
String NumberStr = "";
DefaultListModel<String> listModel = new DefaultListModel<>();
listModel.addElement(NumberStr);
JList<String> list = new JList<>(listModel);
JOptionPane Window = new JOptionPane();
JOptionPane.showMessageDialog(Window, list, "Prime Number Generator",
JOptionPane.CANCEL_OPTION);
Window.setPreferredSize(new Dimension(700,700));
list.setPreferredSize(new Dimension(100, 100));
Window.setVisible(true);
//check if prime, append, update
int y = 0;
int z = 0;
while (y<100){
if (isPrime(z) == true){
NumberStr += z + " true";
} else {
NumberStr += z + " false";
}
y++;
z++;
}
}
public static boolean isPrime (int x){
int i = 1;
boolean result = false;
while (i<=x){
if (i%x<0) {
result = true;
}else{
result = false;;
}
i++;
}
return result;
}
}
Ana hesaplamalarınız devam ederken Swing GUI güncellemesine sahip olmak için, hesaplamaları bir arka plan iş parçacığında çalıştırmanız gerekir. Bunun yerine, tüm hesaplamalarınızı yapmak, String sonuçlarını JList modeline kaydetmek (yaptığınız bir şey değil - sadece döndüğünüz String'i göz ardı edersiniz) ve daha sonra tüm hesaplamalar yapıldığı zaman daha kolay olurdu. senin JListin. Daha basit bir rotaya giderseniz, yine de oluşturduktan sonra NumberStr değişkeninizle bir şeyler yapmanız gerekir - bunu JList modelinize eklemeniz gerekir. Yani, bir DefaultListModel 'nesnesini oluşturun ... –
... JList'inizi oluşturmak için kullanın (model nesnesini JList yapıcısına aktarın) ve her yeni bir numbertr değişkeni oluşturduğunuzda, modele ekleyin. “addElement (...)” yöntemini kullanarak. –