Sadece bir satır yerini değiştirerek sorunu çözdüm. En alta yazdığınız win.setLayout(null) kısmı pencerenin düzenini bozuyor. Bu tarz tanımlamaları pencereyi ekranda göstermeden önce yapmanız daha doğrudur.
public static void main(String[] args) {
JFrame win = new JFrame("Area of Triangle");
win.setSize(600, 400);
win.setDefaultCloseOperation(win.EXIT_ON_CLOSE);
win.setLayout(null); // BURAYA TAŞINDI
JTextField height = new JTextField();
height.setBounds(170, 70, 45, 20);
height.setEditable(true);
JTextField base = new JTextField();
base.setBounds(170, 90, 45, 20);
win.add(height);
win.add(base);
win.setVisible(true);
}
Edilebiliyor, ancak dediğim gibi pencereyi ekranda gösterdikten sonra layout ile ilgili ayarlamalar yapmak pencere düzenini bozuyor. Resimde de görüldüğü gibi iki textfield üst üste binmiş.
Bu da JFrame’i bildigim GUI kutuphaneleri arasinda birden fazla cocuk eklenebilen tek top-level container yapacakti ki, soyle bir sey okudum:
Like all other JFC/Swing top-level containers, a JFrame contains a JRootPane as its only child. The content pane provided by the root pane should, as a rule, contain all the non-menu components displayed by the JFrame . This is different from the AWT Frame case. As a conveniance add and its variants, remove and setLayout have been overridden to forward to the contentPane as necessary. This means you can write:
frame.add(child);
And the child will be added to the contentPane.
Yani aslinda edilemiyomus, teknik olarak. Ama AWT Frame’lerine edilebiliyomus; yanlis oldugum degismiyo
Ama sorun layout. Ilgili SO da oyle demisti, “JPanel kullan, onun layout’u birden fazla obje kaldiriyor.”
Rule-of-thumb: Bir elemente birden fazla cocuk verilecekse o elementin birden fazla cocuk icin tasarlandigindan emin olun; coguna verilmiyor.
Burada yazılandan anladığım kadarıyla, null değerini verdiğimizde Container’ların bir layout kullanmamasını sağlıyormuş. Böylece nesnelerin ekranda nerede görüntüleneceği bize bırakılmış oluyor.
@coderistan Verdiğin cevap gerçekten işime yaradı teşekkür ederim ek bir sorum daha var bu jtextfieldların soluna yazı eklemek istediğimizde label ile mi yapıcaz yoksa daha farklı kolay bir yolu var mı(pythonda sanki hatırlıyor gibiyim ama emin değilim)