Javaで動的コンテンツ・ウィンドウは、彼らが素数である場合(以下のコードではint型のyで指定された)最初のn個の番号をチェックして、印刷しますこのようなウィンドウへの出力: - 真の 2 - 真 3 - トゥルー 4 - 偽 5 -ライブ更新、私はダイアログを作成するプログラムを作成しようとしている
1真
等...
...私は悩み、それを動的にして生きる方法を考え出す(すなわちリフレッシュ)が、別のフォーラムで誰かが提案するJListを使用し、コンテンツとしてという設定があったが、私がやった(あなたは以下を参照することができますよう)が、
- ウィンドウは700×700程度ではなく、リストもそうではありません。私が得るすべてはデフォルトのサイズでウィンドウで、唯一のコンテンツとして白線ので、
- リストが空である、または少なくとも私はそう思います。
コード:
while (y<100){
if (isPrime(z) == true){
NumberStr += z + " true";
} else {
NumberStr += z + " false";
}
y++;
z++;
}
が、あなたは彼らと何もしないしているので、何も表示されません:
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;
}
}
スウィングGUIをプライム計算として更新するには、バックグラウンドスレッドで計算を実行する必要があります。代わりに、すべての計算を行う方がはるかに簡単で、String結果をJListのモデルに保存します(何もしていないもの - 返されたStringを無視するだけです)。すべての計算が完了したら、あなたのJList後者の方が簡単な場合は、作成したNumberStr変数で何かを行う必要があります.JListのモデルに追加する必要があります。したがって、 'DefaultListModel'オブジェクトを作成してください... –
...あなたのJList(JListのコンストラクタにあなたのモデルオブジェクトを渡します)を作成するためにそれを使用し、新しいnumberStr変数を作成するたびにモデルに追加します'addElement(...)'メソッドを使用します。 –