ถ้าเราจะจัดให้ JFrame ของเราอยู่กลางหน้าได้โดยเรียกใช้ Function getToolkit().getScreenSize() เราจะได้ขนาดของหน้าจอกลับมาในรูปของ Dimention Object (ไอ้เจ้าฟังก์ชั่น getToolkit() ของ JFrame นี้มัน inherit มาจาก Window) ลองมาดูตัวอย่างกันคับ
Dimension d = getToolkit().getScreenSize();
int screenWidth = d.width;
int screenHeight = d.height;
หลังจากนั้นเราก็มาหาตำแหน่งกึ่งกลางของจอโดยเอาค่าความกว้างกับความยาวมาหารด้วย2
int centerX = screenWidth/2;
int centerY = screenHeight/2;
แล้วก็มาหาตำแหน่งที่เราจะวาง JFrame เพื่อให้ frame นั้นอยู่กลางหน้าจอ เนื่องจากว่าเวลาเรากำหนดตำแหน่งของ frame ตำแหน่งที่เรากำหนดจะเป็นตำแหน่งของมุมซ้ายด้านบนของ frame มันเลยไม่อยู่ตรงกลางให้เรา (55+) ดังนั้นถ้าเราจะกำหนดตำแหน่งกึ่งกลางจอให้กับ JFrame ตรงๆนั้น frame ก็จะไม่ได้อยู่ตรงกลางเราจึงต้องคำนวนหาตำแหน่งของมันซะก่อน โดยลบค่าของ centerX และ centerY ด้วยขนาดครึ่งนึงของ frame ตามลำดับดังนี้
int xPos = centerX – frame.getWidth() / 2;
int yPos = centerY – frame.getHeight() / 2;
*สมมติให้ frame เป็น reference ของ JFrame
และแล้วเราก็จะได้ตำแหน่งที่จะต้องกำหนดให้กับ JFrame แว้ววว… ก็มาsetค่าตำแหน่งให้กับมันเลยคับ
frame.setLocation(xPos,yPos);
ก็เป็นอันว่า frame ของเราก็จะอยู่ตรงกลางเป็นที่เรียบร้อยละค๊าบบ.. มาดูตัวอย่างกันดีกว่า อิอิ
import javax.swing.*;
import java.awt.*;
public class TestJFrame extends JFrame {
public static void main(String[] agrs) {
JFrame f = new JFrame(“Centering JFrame”);
f.setSize(200,200);
Dimension d = f.getToolkit().getScreenSize();
int screenWidth = d.width;
int screenHeight = d.height;
int centerX = screenWidth / 2;
int centerY = screenHeight / 2;
int xPos = centerX – f.getWidth() / 2;
int yPos = centerY – f.getHeight() / 2;
f.setLocation(xPos,yPos);
f.setVisible(true);
}
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น