Eledi Componentleri daha yaxsi tanimaq olur hem de ishleme qurulma prinsiplerin bilmek olur
Manual kod yazmağın çox xeyri var, amma vaxt çox aparır. Qafqazda biz də manual yazırdıq, konsolda işləyirdik.
Sagol Ramin muellim Tesekkurler...
PS: Neatbeans da islemek duzdu hasan gelir Amma Universitet projesi olduqu ucun Mecbur Kod yazasam)))
Layout manager istifadə etmək lazım. GUİ üçün əl ilə kod yazmaq yerinə onu Netbeans-də vizual dizayner ilə hazırlamaq daha rahatdır.
Layout manager-lərin istifadəsi haqqında dərslik
http://download.oracle.com/javase/tutorial/uiswing/layout/index.html
FlowLayout komponentləri arxa arxaya yerləşdirir, yer olmayanda alta keçirir.
Bayaqkı proqramda belə dəyişiklik edib yoxlaya bilərsən:
pencere.setSize(100, 100);
pencere.setLayout(new FlowLayout());
JLabel lbAdres = new JLabel("Label");
JLabel lbAdres2 = new JLabel("Label 2");
pencere.add(lbAdres);
pencere.add(lbAdres2);
Sagol Ramin muellim cavaba gore . Birde Eger ikinci Labeli elave etsem Frame onda o evvelkinin uzerine dusur Amma ikinci label i Birincinin altinda yerlesdirmek isteyirem, Onu nece etmek olar?
Bu proqramda problem var:
Proqram məntiqi səhvdir. while(it!=Integer.MAX_VALUE) şərtinə görə proqram 2 147 483 647 (2^31-1) dəfə işləyir. Hər dəfə yeni Label obyekti yaradır, onu forma əlavə edir. Sizə lazım olan 1 frame və label yaradıb, label-in üzərindəki yazını dəyişməkdir.
import javax.swing.*;
public class Test {
public static void main(String[] args) {
JFrame pencere = new JFrame("Alert me");
pencere.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pencere.setLocation(5, 25);
pencere.setSize(100, 100);
JLabel lbAdres = new JLabel("Label");
pencere.add(lbAdres);
pencere.setVisible(true);
int it=0;
try {
while(it < 100) {
lbAdres.setText("" + SampleClass.method());
Thread.sleep(100);
it++;
}
} catch(InterruptedException ex) {
System.out.println(ex.getMessage());
}
}
}
class SampleClass {
public static int method() {
return (int)(100*Math.random());
}
}