Dikkat ettiysen yazdigin kodda frame i olusturuyorsun ancak pencereyi kapattigin vakit olacaklara
dair herhangi birsey yazmamissin.Yani sen her class i calistirdiginda o heap te yerini aliyor ancak
pencereyi kapatinca kapansada o class calismaya devam ediyor.
koda fr.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
ekledim duzeldi. 9-10 kere calistirdim bir sorun gormedim.
import javax.swing.*;
import java.awt.Container;
public class Test {
public Test() {
buttonEkle();
}
public void buttonEkle(){
JFrame fr=new JFrame("yeni pencere");
fr.setSize(1024,738); // boyut, lokasyon vs..
fr.setLocation(0,0); //..
fr.setLayout(null); //..
fr.setVisible(true); //..
fr.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
Container f_con= fr.getContentPane(); // pencere içerik taşıyıcısı.. nesneler buna
f_con.setLayout(null); //..
JPanel list =new JPanel(); //> içinde 190 tane tuş alt alta bulunan bi liste paneli olacak
list.setLayout(null); //..
list.setSize(1015,650); //..
for(int i=0;i<200;i++){ //> 200 tane tuşu liste paneline ekle, ve boyutunu büyüt
JButton newbut=new JButton("buton>"+i);
newbut.setSize(99,29);
newbut.setLocation(1,i*50);
list.add(newbut);
list.setPreferredSize(new java.awt.Dimension(997,i*50));
}
JScrollPane mainpanel=new JScrollPane(list); //> bu scrollable bölümün içinde liste
mainpanel.setSize(1015,650);
mainpanel.setLocation(5,50);
f_con.add(mainpanel); // pencere taşıyıcısına mainpaneli ekle
}
public static void main(String[] args){
Test t = new Test();
}
}
Bir de 200 tane buttonu for un icinde container a doldurmak islemciyi oldurmeden thread ile yapilabilir.
import javax.swing.*;
import java.awt.Container;
public class Test2{
JFrame fr;
public Test2() {
thread1 = new Thread(){
public void run(){
while(true){
threadButtonEkle();
}
}
};
thread1.start();
}
public void threadButtonEkle(){
fr=new JFrame("yeni pencere");
fr.setSize(1024,738); // boyut, lokasyon vs..
fr.setLocation(0,0); //..
fr.setLayout(null); //..
fr.setVisible(true); //..
fr.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
Container f_con= fr.getContentPane(); // pencere içerik taşıyıcısı.. nesneler buna
f_con.setLayout(null); //..
JPanel list =new JPanel(); //> içinde 190 tane tuş alt alta bulunan bi liste paneli
list.setLayout(null); //..
list.setSize(1015,650); //..
for(int i=0;i<200;i++){ //> 200 tane tuşu liste paneline ekle, ve boyutunu büyüt
JButton newbut=new JButton("buton>"+i);
newbut.setSize(99,29);
newbut.setLocation(1,i*50);
list.add(newbut);
list.setPreferredSize(new java.awt.Dimension(997,i*50));
}
JScrollPane mainpanel=new JScrollPane(list); //> bu scrollable bölümün içinde liste
mainpanel.setSize(1015,650);
mainpanel.setLocation(5,50);
f_con.add(mainpanel); // pencere taşıyıcısına mainpaneli ekle
thread1.stop();
}
public static void main(String[] args){
Test2 t = new Test2();
}
private Thread thread1;
}
|