ภาพรวม: ในบทความนี้เราจะหารือเกี่ยวกับความโปร่งใสและหน้าต่างที่มีรูปทรงที่แตกต่างกันใน Java. ใน Java 7 แกว่งสนับสนุนคุณสมบัตินี้และทำให้องค์ประกอบ UI แกว่งมีความยืดหยุ่นและใช้งานง่าย.
การแนะนำ: ในบางโปรแกรม, หน้าต่างโปร่งใสเป็นความต้องการที่จะสนับสนุนการทำงานของ. ขณะนี้ใน Java, ความโปร่งใสสามารถดำเนินการได้. หน้าต่างโปร่งแสงจะถูกสร้างขึ้นโดยการเปลี่ยนความทึบแสงของตนโดยการใช้วิธีการที่เรียกว่า setOpacity ในส่วน JFrame. แต่เราต้องเข้าใจว่าหน้าต่างโปร่งแสงเป็นไปได้เฉพาะในกรณีที่ระบบปฏิบัติการที่รองรับสนับสนุน. และเรายังต้องให้แน่ใจว่าหน้าต่างที่ไม่ได้ตกแต่ง. ที่จะทำให้หน้าต่างชอบธรรม, คุณต้องโทร setUndecorated (จริง) วิธี. บางเวลาที่มันจะต้องมีการเปลี่ยนแปลงรูปร่างของ UI หน้าต่าง. ที่จะใช้มัน, เราจำเป็นต้องเรียกวิธีการ setShape ภายในวิธี componentResized. มันจะคำนวณรูปร่างเมื่อหน้าต่างมีการปรับขนาด.
ความเป็นมา: ใน Java UI, การสนับสนุนสำหรับหน้าต่าง translucency และความต้องการที่มีรูปทรงเป็นเวลานานสำหรับส่วนประกอบสวิง / AWT. สำหรับการเข้าถึงการพัฒนาพื้นเมืองคุณสมบัติเหล่านี้มีอยู่จากเวลานานกลับ. แต่มันก็ไม่สามารถเข้าถึงองค์ประกอบหลัก java. ใน Java6 เป็นต้นไป, สนับสนุนสำหรับฝ้าและหน้าต่างที่มีรูปทรงใช้ได้. แม้ต่อ translucency ระดับพิกเซลยังสนับสนุนใน Java7.
ประเภทของการสนับสนุนการ translucency และความโปร่งใส: เกาะชวา 7 สนับสนุนต่อไปนี้สามประเภทของการสนับสนุน.
TRANSLUCENT: คุณสมบัติในหน้าต่างนี้สามารถมีสีที่แตกต่างกัน แต่มีระดับเดียวกันของความทึบแสง. ดังนั้นค่าอัลฟาจะเหมือนกันสำหรับทุกพิกเซล. นี่คือผลที่เหมาะสมสำหรับการจางหายไปปิดหน้าต่างแล้วค่อยๆลดลงและเพิ่มค่าอัลฟา.
PERPIXEL_TRANSLUCENT: สถานที่แห่งนี้สนับสนุนค่าอัลฟาที่แตกต่างกันภายในหน้าต่างของตัวเอง. นี้จะใช้จะจางหายไปพื้นที่ที่เลือกของหน้าต่าง.
PERPIXEL_TRANSPARENT: สถานที่ให้บริการนี้รองรับรูปร่างที่แตกต่างกันของหน้าต่างมากกว่าสี่เหลี่ยมผืนผ้าแบบดั้งเดิม. ถ้าต่อความโปร่งใสพิกเซลได้รับการสนับสนุนแล้วรูปทรงแตกต่างกันเช่นวงกลม, สามเหลี่ยมที่สามารถสร้างขึ้น.
ก่อนที่เราจะใช้ใด ๆ ของคุณสมบัติข้างต้นเราต้องทดสอบการสนับสนุนภายใต้ระบบปฏิบัติการโกหก. การทดสอบสามารถทำได้โดยการใช้วิธีการ isWindowTranslucencySupported เป็นของชั้น java.awt.GraphicsDevice. มันต้องใช้เวลาของความโปร่งใสเป็น input และผลตอบแทนจริง / เท็จเพื่อแสดงการสนับสนุน.
ให้เราตรวจสอบรหัสตัวอย่างที่จะใช้คุณลักษณะ translucency. ในตัวอย่างนี้เราได้สร้างหน้าต่างโปร่งแสงเป็นรูปสี่เหลี่ยมผืนผ้าบนพื้นที่ข้อความ. ครั้งแรกที่เราได้ใช้งานโหมดการตกแต่งที่จะได้รับผลกระทบของความโปร่งใส. แล้วเราจะได้ตรวจสอบว่ามีระบบปฏิบัติการที่รองรับการสนับสนุนหรือไม่. ถ้าสนับสนุนผลที่ออกมาปรากฏบนกรอบหน้าต่าง.
Listing1: ตัวอย่าง translucency แสดงของหน้าต่าง JFrame
นำเข้า java.awt.Color;
นำเข้า java.awt.GraphicsDevice;
นำเข้า java.awt.GraphicsEnvironment;
นำเข้า java.awt.GridBagLayout;
นำเข้า java.awt.event.ComponentAdapter;
นำเข้า java.awt.event.ComponentEvent;
นำเข้า java.awt.geom.Rectangle2D;
นำเข้า javax.swing.JFrame;
นำเข้า javax.swing.JTextArea;
นำเข้า javax.swing.SwingUtilities;
ของประชาชน ชั้น TransRecFrame ขยาย JFrame {
/**
* สร้างกรอบสี่เหลี่ยมโปร่งใสด้วย 85% ความโปร่งใส
*/
ของประชาชน TransRecFrame() {
ซุปเปอร์(“กรอบสี่เหลี่ยมโปร่งแสง”);
//ตั้งรูปแบบ
setLayout(ใหม่ GridBagLayout());
//สร้างพื้นที่ข้อความ
สุดท้าย = JTextArea txtArea ใหม่ JTextArea(5, 50);
txtArea.setBackground(สี.CYAN);
เพิ่ม(txtArea);
//การเรียกร้องให้ปิดการใช้งานตกแต่ง
setUndecorated(จริง);
//โทร setShape เพื่อปรับขนาดรูปร่างเมื่อ widnow มีการปรับขนาด
addComponentListener(ใหม่ ComponentAdapter() {
@ Override
ของประชาชน ถือเป็นโมฆะ componentResized(ComponentEvent และ) {
setShape(ใหม่ Rectangle2D.Double(0, 0, getWidth(), getHeight()));
}
});
//ทำให้หน้าต่าง 85% โปร่งใส
setOpacity(0.85ฉ);
//ตั้งค่าพารามิเตอร์อื่น ๆ
setLocationRelativeTo(เป็นศูนย์);
setSize(200, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(จริง);
}
ของประชาชน คงที่ ถือเป็นโมฆะ หลัก(เชือก[] args) {
//สร้างสภาพแวดล้อมกราฟิก
Youth Venture GraphicsEnvironment GraphicsEnvironment =
.getLocalGraphicsEnvironment();
//ตรวจสอบว่าระบบปฏิบัติการที่สนับสนุน translucency
ถ้า (genv.getDefaultScreenDevice().isWindowTranslucencySupported(
GraphicsDevice.WindowTranslucency.TRANSLUCENT)) {
System.out.println(“OS สนับสนุน translucency”);
ใหม่ TransRecFrame();
}
}
}
คุณสมบัติที่จะสนับสนุน translucency และรูปร่าง: ใน Java7 มีหลักสามคุณสมบัติที่มีเพื่อสนับสนุน translucency และรูปร่างของหน้าต่างเป็น.
- translucency หน้าต่างเต็ม: ในวิธีนี้หน้าต่างเต็มรูปแบบโปร่งแสง.
- ต่อ translucency พิกเซล: ในแนวทางนี้เป็นส่วนหนึ่งของหน้าต่างเป็นโปร่งแสง
- หน้าต่างที่มีรูปทรง: ทำให้หน้าต่างที่มีรูปทรงแตกต่างกันเช่น ovale, วงกลม, ฯลฯ รูปสี่เหลี่ยมผืนผ้า.
ต่อ translucency พิกเซล:
เราได้เห็นแล้วว่าจะทำให้หน้าต่างโปร่งแสงสมบูรณ์ในตัวอย่างก่อนหน้า. ตอนนี้เราจะหารือเกี่ยวกับส่วนที่สองของการทำชุดของพิกเซลโปร่งแสงโดยใช้สีพื้นหลังของพวกเขา. มีข้อ จำกัด บางอย่างที่จะใช้สถานการณ์นี้. หน้าต่างไม่ควรจะเป็นแบบเต็มหน้าจอและระบบจะต้องสนับสนุน translucency ระดับพิกเซล. ส่วนที่เหลือของขั้นตอนจะคล้ายกับตัวอย่างข้างต้น.
ในตัวอย่างต่อไปนี้เราจะเห็นวิธีการ translucency ระดับพิกเซลตั้งอยู่ในกรอบ.
Listing2: พิกเซลระดับตัวอย่างแสดงการสนับสนุน translucency.
นำเข้า javax.swing.*;
นำเข้า java.awt *.;
นำเข้า java.awt.event.ActionEvent;
นำเข้า java.awt.event.ActionListener;
ของประชาชน ชั้น PixelTranslucency ขยาย JFrame {
ของประชาชน PixelTranslucency() {
ซุปเปอร์(“ตั้ง translucency ระดับพิกเซล”);
//กำหนดขนาดของ JFrame
setSize(250, 250);
//ตั้งวางออก
getContentPane().setLayout(ใหม่ GridLayout(6, 6));
//โทรสำหรับการตั้งค่าพิกเซล
สำหรับ(int I = 0; ผม &ลิตร; 16; i ){
เพิ่ม(ใหม่ แผงพิกเซล(255 – ผม * 12));
}
//ตั้งพื้นหลังและคุณสมบัติอื่น ๆ
setBackground(ใหม่ สี(0, 0, 0, 0));
setLocationRelativeTo(เป็นศูนย์);
setVisible(จริง);
}
ของประชาชน คงที่ ถือเป็นโมฆะ หลัก(เชือก[] args) {
Youth Venture GraphicsEnvironment GraphicsEnvironment =.getLocalGraphicsEnvironment();
//ตรวจสอบว่าหน้าต่างสนับสนุน translucency
ถ้า (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSLUCENT)) {
ระบบ.ออก.println(“OS สนับสนุน translucency”);
ใหม่ PixelTranslucency();
}
} ส่วนตัว ชั้น แผงพิกเซล ขยาย JPanel {
ส่วนตัว แผงพิกเซล(int pixl) {
ซุปเปอร์();
setBackground(ใหม่ สี(0, 0, 255, pixl));
}
}
}
ของ Windows รูป:
ตอนนี้เราจะหารือเกี่ยวกับคุณลักษณะที่สำคัญอีกคนหนึ่งที่สนับสนุนโดยหน้าต่างรูป Java7.The สนับสนุนทุกประเภทของรูปทรงสิ่งที่เป็นความต้องการของผู้ใช้. คุณลักษณะนี้จะช่วยให้คุณสามารถสร้างรูปทรงเช่นวงกลมใด ๆ, สามเหลี่ยม, รูปหลายเหลี่ยมหรือรูปทรงที่ซับซ้อนเป็นไปได้. วิธี setShape ของชั้นหน้าต่างที่สามารถใช้ได้สำหรับการตั้งค่าคุณสมบัติ. แต่อีกครั้งที่เราต้องจำไว้ว่าโหมดเต็มหน้าจอไม่ควรอนุญาตและระบบปฏิบัติการที่สนับสนุน translucency.
ตัวอย่างต่อไปนี้แสดงการใช้งานของหน้าต่างที่มีรูปทรง.
Listing3: โค้ดตัวอย่างแสดงการใช้งานของหน้าต่างที่มีรูปทรง.
นำเข้า javax.swing.*;
นำเข้า java.awt *.;
นำเข้า java.awt.geom.Ellipse2D;
นำเข้า java.awt.geom.GeneralPath;
ของประชาชน ชั้น JavaShapedWindow ขยาย JFrame {
ของประชาชน JavaShapedWindow() {
ซุปเปอร์(“ตั้งหน้าต่างรูป”);
//ตั้ง OFF ชอบธรรมที่จะได้รับผลกระทบ
setUndecorated(จริง);
//ตั้งค่าขนาด
setSize(ใหม่ มิติ(250, 250));
//ตั้งค่าคุณสมบัติรูปหลายเหลี่ยม
= รูปหลายเหลี่ยมหลายเหลี่ยม ใหม่ รูปหลายเหลี่ยม();
polygon.addPoint(0, 100);
polygon.addPoint(50, 0);
polygon.addPoint(100, 100);
//ตั้งค่าของรูปร่าง
Ellipse2D.Double newCircle = ใหม่ Ellipse2D.Double(0, 50, 1.0*100, 1.0*100);
//ตั้งค่าคุณสมบัติเส้นทางทั่วไป
= GeneralPath gpath ใหม่ GeneralPath();
gpath.append(รูปหลายเหลี่ยม, จริง);
gpath.append(newCircle, จริง);
//กำหนดเส้นทาง
setShape(gpath);
//ตั้งรูปแบบกล่อง
getContentPane().setLayout(ใหม่ BoxLayout(getContentPane(), BoxLayout.X_AXIS));
เพิ่ม(กล่อง.createHorizontalGlue());
//สร้างคุณสมบัติฉลากและการตั้งค่า
JLabel newlabel = ใหม่ JLabel(“Java หน้าต่างรูป”);
newlabel.setForeground(สี.ขาว);
เพิ่ม(newlabel);
เพิ่ม(กล่อง.createHorizontalGlue());
//เนื้อหาชุดสีพื้นหลังของบานหน้าต่าง
getContentPane().setBackground(สี.สีฟ้า);
//สถานที่ตั้ง
setLocationRelativeTo(เป็นศูนย์);
setVisible(จริง);
}
ของประชาชน คงที่ ถือเป็นโมฆะ หลัก(เชือก[] args) {
Youth Venture GraphicsEnvironment GraphicsEnvironment =.getLocalGraphicsEnvironment();
//ตรวจสอบการสนับสนุนระบบปฏิบัติการสำหรับการให้บริการนี้
ถ้า (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT)) {
ระบบ.ออก.println(“OS สนับสนุน translucency”);
ใหม่ JavaShapedWindow();
}
}
}
นอกจากนี้เรายังสามารถใช้การรวมกันของสองคุณสมบัติเช่นหน้าต่าง translucency และรูปทรง. ที่จะใช้นี้, เรียกวิธีการ setOpacity กับกรอบของคุณ. หน้าต่างผลจะแสดงผลรวม. แต่เราควรจำระบบปฏิบัติการที่รองรับจะต้องสนับสนุนการ translucency ระดับพิกเซลและความโปร่งใสในระดับพิกเซล.
ข้อสรุป:
ในบทความนี้เราได้ครอบคลุมคุณสมบัติใหม่บางอย่างใน translucency java7.The และคุณสมบัติหน้าต่างที่มีรูปทรงเป็นที่น่าสนใจจริงๆและทำให้ java องค์ประกอบ UI ความยืดหยุ่นมากขึ้น. แต่ในเวลาเดียวกันเราต้องจำไว้ว่าระบบปฏิบัติการที่รองรับควรจะสนับสนุนคุณสมบัติเหล่านี้ทั้งหมด. มิฉะนั้นผลที่ออกมาจะมองไม่เห็น. ดังนั้นในการประยุกต์ใช้ตัวเองที่เราตรวจสอบการสนับสนุนระบบปฏิบัติการและแล้วใช้ผล. คุณลักษณะล่าสุดของ java ช่วยให้นักพัฒนาในการสร้างความแตกต่างของผลกระทบในด้าน UI. ในฐานะที่เราทุกคนรู้ว่ารูปลักษณ์และความรู้สึกเป็นสิ่งสำคัญของการประยุกต์ใช้เทคโนโลยีใด ๆ UI. ดังนั้นนักพัฒนาที่มีการติดตั้งมาพร้อมกับเครื่องมือที่จะทำให้ UI สบายมากขึ้นและน่าสนใจ.