11 Aralık 2019 Çarşamba

Swing JFrame Sınıfı

Giriş
Şu satırı dahili ederiz.
import javax.swing.JFrame;
Uygulamanın ana penceredir. Layout olarak BorderLayout kullanır. Açıklaması şöyle
BorderLayout is default for JFrame
BorderLayout  ekranı 5'e böler. EAST, WEST, CENTER, NORTH ve SOUTH

Kullanım
Şöyle yaparız
JFrame frame = new JFrame();

JButton button = new JButton(“Click here!”)

// But just because you add a JFrame, you can’t start adding anything 
//or rather put anything into it. To do so, Java uses a component 
//called a ‘Content pane’. Now we can add a button or two to it.
frame.getContentPane().add(button);

//To make the JFrame visible you must give 
//it a size and set the visible method to true

frame.setSize(300,300);

frame.setVisible(true);
constructor - caption

Şöyle yaparız.
JFrame frame = new JFrame("Window");
add metodu
Örnek
Şöyle yaparız.
JPanel panel = ...;
...
frame.add (panel);
Örnek
Panel'in kaydırılabilir olması için şöyle yaparız.
JPanel panel = new JPanel();
...
frame.add(new JScrollPane(panel));
add metodu
Örnek
BorderLayout kullandığı için şöyle yaparız.
JScrollPane jp = ...;
frame.add(jp, BorderLayout.CENTER);
Örnek
Şöyle yaparız.
frame.add(browsePanel, BorderLayout.WEST);
frame.add(scrollPane, BorderLayout.EAST);
addWindowListener metodu
Örnek
Şöyle yaparız.
frame.addWindowListener(new WindowAdapter() {
  @Override
  public void windowClosing(WindowEvent e) {

    // do other stuff....

    frame.setVisible(false);
    frame.dispose();
  }
});
dispose metodu
Şöyle yaparız
frame.dispose();
getContentPane metodu
Metodun içi şöyle.
public Container getContentPane() {
  return getRootPane().getContentPane();
}
Örnek
Eski kodlarda şöyle yapılırdı. Ancak bunun yerine artık direkt frame.add () metodu çağrılabiliyor.
JPanel myPanel = ...;
frame.getContentPane().add (myPanel);
Örnek
İstersek layout kullanmayabiliriz. Şöyle yaparız.
frame.getContentPane().setLayout(null);
Bu durumda her çocuk nesneye konumunu bildirmek gerekir. Şöyle yaparız.
JButton btn = new JButton("Button");
btn.setBounds(232, 134, 89, 23);
frame.getContentPane().add(btn);
getLayeredPane metodu
Layered Pane içinde Menubar bulunur. Açıklaması şöyle.
Layered Pane: Contains the Menubar and the Content Pane
getRootPane metodu
JFrame içinde dışarıdan içeriye yani sırasyıla şu pane'ler bulunur.
1.root pane
2.layered pane
3.content pane
4.glass pane
Örnek
Şöyle yaparız.
JFrame aWindow = ...;
aWindow.getRootPane().setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
pack metodu
Şöyle yaparız.
frame.pack ();
repaint metodu
Şöyle yaparız.
frame.repaint();
revalidate metodu
Şöyle yaparız.
frame.revalidate();
setBounds metodu
Şöyle yaparız.
frame.setBounds(100, 100, 800, 600);
setContentPane metodu
Açıklaması şöyle
Usually, you add internal frames to a desktop pane. The desktop pane, in turn, might be used as the content pane of a JFrame.
Şöyle yaparız
JFrame frame = new JFrame ();
JDesktopPane desktop = new JDesktopPane ();
...
frame.setContentPane (desktop);
setDefaultCloseOperation metodu
Bu sınıf WindowConstants arayüzünden kalıttığı için arayüzdeki sabitlere erişebiliriz. Şöyle kodlar olabilir
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
Örnek
Şöyle yaparız. JFrame kapanınca System.exit (0) çağrılır.
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
Örnek
Şöyle yaparız.
frame.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);
Örnek
Şöyle yaparız. Bu durumda çarpı düğmesine basınca addWindowListener() halen çağrılır. Bu metodu gerçekleştirmek gerekir.
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
setDefaultLookAndFeelDecorated metodu
Şöyle yaparız.
JFrame.setDefaultLookAndFeelDecorated(true);
setExtendedState metodu
Şöyle yaparız.
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
setJMenuBar metodu
Şöyle yaparız.
JMenuBar menuBar = ...;
...
// Set the frame to use the bar
setJMenuBar(menuBar);
setLocation metodu
Şöyle yaparız.
frame.setLocation(300, 100);
setLocationRelativeTo metodu
Örnek
Şöyle yaparız.
JFrame frame1 = ...;

JFrame frame2 = new JFrame();
frame2.setLocationRelativeTo(frame1);
Örnek
Şöyle yaparız.
frame.setLocationRelativeTo (null);
setPreferredSize metodu
Şöyle yaparız.
frame.setPreferredSize (new Dimension(800, 600));
setResizable metodu
Şöyle yaparız.
frame.setResizable(false);
setSize metodu
Açıklaması şöyle. Eğer setDecorated(true) ise verilen boyutları göz ardı edilebilir.
The method changes the geometry-related data. Therefore, the native windowing system may ignore such requests, or it may modify the requested data, so that the Window object is placed and sized in a way that corresponds closely to the desktop settings.
Örnek
Şöyle yaparız.
frame.setSize (500,250);
Örnek
Şöyle yaparız.
JFrame frame = new JFrame();
frame.setUndecorated(true);
frame.setVisible(true);
frame.setSize(120, 220);
System.out.println(frame.getWidth() + " - " + frame.getHeight()); //120 x 120
setTitle metodu
Şöyle yaparız.
frame.setTitle("Hello");
setUndecorated metodu
true ise pencerenin üst tarafındaki minimize/maximize gibi düğmeleri kapatır.  Yani unmovable hale getirir.

Örnek
Şöyle yaparız.
frame.setUndecorated(true);
Örnek
Şöyle yaparız. Pencere taşınamaz ve üst çubuk (title bar) görünmez.
myFrame.setUndecorated(true);
Color color = UIManager.getColor("activeCaptionBorder");
myFrame.getRootPane().setBorder(BorderFactory.createLineBorder(color, 4));
setVisible metodu
Şöyle yaparız.
frame.setVisible (true);

Hiç yorum yok:

Yorum Gönder