ພາບລວມ: ໃນບົດຄວາມນີ້ພວກເຮົາຈະປຶກສາຫາລືກ່ຽວກັບຄວາມໂປ່ງໃສແລະປ່ອງຢ້ຽມເປັນຮູບທີ່ແຕກຕ່າງກັນຢູ່ໃນເກາະຊາວາ. ໃນເກາະຊາວາ 7 swing ສະຫນັບສະຫນູນຄຸນສົມບັດນີ້ແລະເຮັດໃຫ້ອົງປະກອບ UI swing ຫຼາຍປ່ຽນແປງໄດ້ແລະຜູ້ຊົມໃຊ້ເປັນມິດ.
ການນໍາສະເຫນີ: ໃນໃບຄໍາຮ້ອງບາງ, ປ່ອງຢ້ຽມໂປ່ງໃສແມ່ນຮຽກຮ້ອງຕ້ອງການເພື່ອສະຫນັບສະຫນູນການທໍາງານຂອງຕົນໄດ້. ໃນປັດຈຸບັນຢູ່ໃນເກາະຊາວາ, ຄວາມໂປ່ງໃສສາມາດໄດ້ຮັບການປະຕິບັດ. ປ່ອງຢ້ຽມ translucent ແມ່ນສ້າງໂດຍ altering OPAC ຂອງຕົນໂດຍການປະຕິບັດວິທີການເອີ້ນວ່າ setOpacity ກ່ຽວກັບອົງປະກອບ JFrame ເປັນ. ແຕ່ພວກເຮົາຕ້ອງເຂົ້າໃຈວ່າເປັນປ່ອງຢ້ຽມ translucent ແມ່ນເປັນໄປໄດ້ພຽງແຕ່ຖ້າວ່າລະບົບການປະຕິບັດການທີ່ຕິດພັນສະຫນັບສະຫນູນມັນ. ແລະພວກເຮົາຍັງຈໍາເປັນຕ້ອງໃຫ້ແນ່ໃຈວ່າປ່ອງຢ້ຽມບໍ່ໄດ້ decorated. ເພື່ອເຮັດໃຫ້ເປັນປ່ອງຢ້ຽມ undecorated, ທ່ານຈໍາເປັນຕ້ອງໂທຫາ setUndecorated (ຄວາມຈິງ) ວິທີການ. ທີ່ໃຊ້ເວລາບາງຄົນມັນຕ້ອງມີການປ່ຽນແປງຮູບຮ່າງຂອງ UI window ໄດ້. ເພື່ອປະຕິບັດມັນ, ພວກເຮົາຈໍາເປັນຕ້ອງໂທຫາວິທີການ setShape ພາຍໃນວິທີການ componentResized ໄດ້. ມັນຈະ recalculate ຮູບຮ່າງໃນເວລາທີ່ປ່ອງຢ້ຽມນັ້ນ resized.
ກັບຄືນໄປບ່ອນດິນ: ໃນເກາະຊາວາ UI, ສະຫນັບສະຫນູນສໍາລັບ Windows translucent ແລະຮູບນີ້ແມ່ນຄວາມຕ້ອງການທີ່ໃຊ້ເວລາຍາວນານສໍາລັບສ່ວນປະກອບ swing / AWT. ສໍາລັບການເຂົ້າເຖິງການພັດທະນາ native ກັບຄຸນສົມບັດເຫຼົ່ານີ້ແມ່ນມີຢູ່ຈາກທີ່ໃຊ້ເວລາຍາວນານກັບຄືນ. ແຕ່ວ່າມັນບໍ່ເຂົ້າກັບອົງປະກອບຫຼັກຂອງເກາະຊາວາ. ໃນ Java6 ເປັນຕົ້ນໄປ, ສະຫນັບສະຫນູນສໍາລັບການ translucent ແລະປ່ອງຢ້ຽມຮູບມີ. ເຖິງແມ່ນວ່າຕໍ່ translucent ລະດັບ pixels ລວງແມ່ນຍັງສະຫນັບສະຫນູນໃນ Java7.
ປະເພດຂອງການສະຫນັບສະຫນູນສໍາລັບການ translucent ແລະຄວາມໂປ່ງໃສ: ເກາະຊາວາ 7 ສະຫນັບສະຫນູນດັ່ງຕໍ່ໄປນີ້ສາມປະເພດຂອງການສະຫນັບສະຫນູນ.
translucent: ໃນຄຸນນະສົມບັດນີ້ປ່ອງຢ້ຽມສາມາດມີສີສັນທີ່ແຕກຕ່າງກັນແຕ່ມີລະດັບດຽວກັນຂອງ OPAC. ດັ່ງນັ້ນ, ມູນຄ່າການບໍ່ມີເພດ; ແມ່ນອັນດຽວກັນສໍາລັບການ pixels ລວງທັງຫມົດ. ຜົນກະທົບອັນນີ້ແມ່ນເຫມາະສົມສໍາລັບການມະລາຍຫາຍໄປນອກປ່ອງຢ້ຽມແລະຫຼັງຈາກນັ້ນຄ່ອຍໆຫຼຸດລົງແລະເພີ່ມມູນຄ່າການບໍ່ມີເພດ;.
PERPIXEL_TRANSLUCENT: ຊັບສິນນີ້ສະຫນັບສະຫນູນຄຸນຄ່າຂອງອັກສອນທີ່ແຕກຕ່າງກັນພາຍໃນ window ຕົວມັນເອງ. ນີ້ແມ່ນນໍາໃຊ້ເຂົ້າໃນມະລາຍຫາຍໄປໃນຂົງເຂດຄັດຈ້ອນມາຈາກປ່ອງຢ້ຽມ.
PERPIXEL_TRANSPARENT: ຊັບສິນນີ້ສະຫນັບສະຫນູນຮູບຮ່າງທີ່ແຕກຕ່າງກັນຂອງປ່ອງຢ້ຽມຫຼາຍກວ່າຮູບສີ່ແຈສາກພື້ນເມືອງ. ຖ້າຫາກວ່າຄວາມໂປ່ງໃສຕໍ່ pixels ລວງແມ່ນສະຫນັບສະຫນູນຈາກນັ້ນຮູບຮ່າງແຕກຕ່າງກັນເຊັ່ນແຜ່ນປ້າຍວົງກົມ, ສາມຫຼ່ຽມສາມາດໄດ້ຮັບການສ້າງຕັ້ງ.
ກ່ອນທີ່ພວກເຮົານໍາໃຊ້ຊັບສິນໃດຫນຶ່ງຂ້າງເທິງນັ້ນພວກເຮົາຈໍາເປັນຕ້ອງທົດສອບສະຫນັບສະຫນູນຂອງພາຍໃຕ້ລະບົບປະຕິບັດການເວົ້າຕົວະ. ການທົດສອບສາມາດເຮັດໄດ້ໂດຍການນໍາໃຊ້ວິທີການຂອງ isWindowTranslucencySupported ກັບຫ້ອງຮຽນ java.awt.GraphicsDevice. ຕ້ອງໃຊ້ເວລາປະເພດຄວາມໂປ່ງໃສເປັນປັດໄຈຫນຶ່ງແລະຈະກັບຄືນມາເປັນຄວາມຈິງ / ທີ່ບໍ່ຖືກຕ້ອງເພື່ອບົ່ງບອກສະຫນັບສະຫນູນ.
ຂໍໃຫ້ເຮົາຈົ່ງກວດເບິ່ງລະຫັດຕົວຢ່າງໃນການປະຕິບັດຄຸນນະສົມບັດຂອງ translucent. ຢູ່ໃນຕົວຢ່າງນີ້ພວກເຮົາໄດ້ສ້າງຕັ້ງປ່ອງຢ້ຽມ translucent ມຸມສາກສຸດທີ່ບົດຄວາມ. ຫນ້າທໍາອິດພວກເຮົາໄດ້ເປັນຄົນພິການຕົບແຕ່ງຮູບແບບການເພື່ອໃຫ້ໄດ້ຮັບຜົນສະທ້ອນຂອງຄວາມໂປ່ງໃສໄດ້. ຫຼັງຈາກນັ້ນ, ພວກເຮົາໄດ້ກວດກາເບິ່ງຖ້າຫາກວ່າລະບົບການປະຕິບັດການທີ່ຕິດພັນສະຫນັບສະຫນູນມັນຫຼືບໍ່. ຖ້າຫາກວ່າສະຫນັບສະຫນູນຜົນກະທົບແມ່ນສັງເກດພາ window ໄດ້.
Listing1: ຕົວຢ່າງສະແດງໃຫ້ເຫັນ translucent ຂອງປ່ອງຢ້ຽມ 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() {
Super(“ຂອບມຸມສາກ translucent”);
//ສ້າງຮູບລັກ
setLayout(ໃຫມ່ GridBagLayout());
//ສ້າງພື້ນທີ່ບົດຄວາມ
ສຸດທ້າຍ = JTextArea txtArea ໃຫມ່ JTextArea(5, 50);
txtArea.setBackground(ສີ.CYAN);
ຕື່ມການ(txtArea);
//ໂທຫາທີ່ຈະປິດການຕົບແຕ່ງ
setUndecorated(ຄວາມຈິງ);
//ໂທຫາ setShape ກັບ resize ຮູບຮ່າງໃນເວລາ widnow ແມ່ນ resized
addComponentListener(ໃຫມ່ ComponentAdapter() {
@ ລົບລ້າງການ
ສາທາລະນະ void componentResized(ComponentEvent ແລະ) {
setShape(ໃຫມ່ Rectangle2D.Double(0, 0, getWidth(), getHeight()));
}
});
//ເຮັດໃຫ້ວິນໂດໄດ້ 85% ໂປ່ງໃສ
setOpacity(0.85f);
//ກໍານົດຕົວກໍານົດການອື່ນໆ
setLocationRelativeTo(ສູນ);
setSize(200, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(ຄວາມຈິງ);
}
ສາທາລະນະ static void ຕົ້ນຕໍ(ຊ່ອຍແນ່[] args) {
//ສ້າງສະພາບແວດລ້ອມຮູບພາບ
ຊາວຫນຸ່ມບໍລິສັດ GraphicsEnvironment GraphicsEnvironment =
.getLocalGraphicsEnvironment();
//ກວດເບິ່ງຖ້າ OS ສະຫນັບສະຫນູນ translucent
ຖ້າຫາກວ່າ (genv.getDefaultScreenDevice().isWindowTranslucencySupported(
GraphicsDevice.WindowTranslucency.translucent)) {
System.out.println(“OS ສະຫນັບສະຫນູນ translucent”);
ໃຫມ່ TransRecFrame();
}
}
}
ຄຸນນະສົມບັດທີ່ຈະສະຫນັບສະຫນູນ translucent ແລະຮູບຮ່າງ: ໃນ Java7 ສ່ວນໃຫຍ່ແມ່ນມີສາມລັກສະນະທີ່ມີການສະຫນັບສະຫນູນ translucent ແລະຮູບຮ່າງຂອງປ່ອງຢ້ຽມແມ່ນ.
- translucent window ເຕັມ: ໃນວິທີການນີ້ປ່ອງຢ້ຽມເຕັມແມ່ນ translucent.
- ຕໍ່ translucent pixels ລວງ: ໃນວິທີການແບບນີ້ສ່ວນຂອງປ່ອງຢ້ຽມດັ່ງກ່າວແມ່ນ translucent
- ປ່ອງຢ້ຽມຮູບ: ເຮັດໃຫ້ວິນໂດເປັນຮູບທີ່ແຕກຕ່າງກັນເຊັ່ນເປັນຮູບວົງ, ແຜ່ນປ້າຍວົງກົມ, ແລະອື່ນໆມຸມສາກ.
ຕໍ່ translucent pixels ລວງ:
ພວກເຮົາໄດ້ເຫັນມາແລ້ວເຮັດແນວໃດເພື່ອເຮັດໃຫ້ translucent window ໄດ້ສໍາເລັດສົມບູນໃນຕົວຢ່າງທີ່ຜ່ານມາ. ໃນປັດຈຸບັນພວກເຮົາຈະປຶກສາຫາລືສ່ວນທີສອງຂອງການເຮັດທີ່ກໍານົດໄວ້ຂອງ pixels ລວງ translucent ໂດຍໃຊ້ພື້ນເປັນສີຂອງເຂົາເຈົ້າ. ມີຂໍ້ຈໍາກັດບາງຄົນໄປປະຕິບັດກໍລະນີນີ້ແມ່ນ. ປ່ອງຢ້ຽມບໍ່ຄວນຈະມີຫນ້າຈໍເຕັມທີ່ແລະລະບົບການຕ້ອງສະຫນັບສະຫນູນລະດັບ translucent pixels ລວງ. ສ່ວນທີ່ເຫຼືອຂອງລະບຽບການດັ່ງກ່າວແມ່ນຄ້າຍຄືກັນກັບຍົກຕົວຢ່າງຂ້າງເທິງນີ້.
ຢູ່ໃນຕົວຢ່າງດັ່ງຕໍ່ໄປນີ້ພວກເຮົາຈະເບິ່ງວິທີການ translucent ລະດັບ pixels ລວງຖືກຕັ້ງໃນກອບ.
Listing2: pixels ລວງລະດັບຕົວຢ່າງສະແດງໃຫ້ເຫັນສະຫນັບສະຫນູນ translucent.
ການນໍາເຂົ້າ javax.swing.*;
ການນໍາເຂົ້າ java.awt *.;
ການນໍາເຂົ້າ java.awt.event.ActionEvent;
ການນໍາເຂົ້າ java.awt.event.ActionListener;
ສາທາລະນະ ທີ່ຫ້ອງຮຽນ PixelTranslucency ຂະຫຍາຍ JFrame {
ສາທາລະນະ PixelTranslucency() {
Super(“ກໍານົດລະດັບ translucent pixels ລວງ”);
//ກໍານົດຂະຫນາດຂອງ JFrame ໄດ້
setSize(250, 250);
//ກໍານົດວາງອອກ
getContentPane().setLayout(ໃຫມ່ GridLayout(6, 6));
//ໂທຫາສໍາລັບຕັ້ງ pixels ລວງ
ສໍາລັບ(int i = 0; ຂ້າພະເຈົ້າ < 16; i ){
ຕື່ມການ(ໃຫມ່ ກະດານ pixels ລວງ(255 – ຂ້າພະເຈົ້າ * 12));
}
//ສ້າງພື້ນຖານແລະຄຸນສົມບັດອື່ນໆ
setBackground(ໃຫມ່ ສີ(0, 0, 0, 0));
setLocationRelativeTo(ສູນ);
setVisible(ຄວາມຈິງ);
}
ສາທາລະນະ static void ຕົ້ນຕໍ(ຊ່ອຍແນ່[] args) {
ຊາວຫນຸ່ມບໍລິສັດ GraphicsEnvironment GraphicsEnvironment =.getLocalGraphicsEnvironment();
//ເບິ່ງວ່າປ່ອງຢ້ຽມສະຫນັບສະຫນູນ translucent
ຖ້າຫາກວ່າ (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSLUCENT)) {
ລະບົບ.ອອກ.println(“OS ສະຫນັບສະຫນູນ translucent”);
ໃຫມ່ PixelTranslucency();
}
} ພາກເອກະຊົນ ທີ່ຫ້ອງຮຽນ ກະດານ pixels ລວງ ຂະຫຍາຍ JPanel {
ພາກເອກະຊົນ ກະດານ pixels ລວງ(int pixl) {
Super();
setBackground(ໃຫມ່ ສີ(0, 0, 255, pixl));
}
}
}
Windows ຮູບ:
ໃນປັດຈຸບັນພວກເຮົາຈະປຶກສາຫາລືກ່ຽວກັບຄຸນນະສົມບັດທີ່ສໍາຄັນອີກສະຫນັບສະຫນູນໂດຍປ່ອງຢ້ຽມຮູບ Java7.The ສະຫນັບສະຫນູນທຸກປະເພດຂອງຮູບໃດກໍຕາມຈະຮຽກຮ້ອງຕ້ອງການຂອງຜູ້ໃຊ້ໄດ້. ຄຸນນະສົມບັດນີ້ຈະຊ່ວຍທ່ານໃນການສ້າງຮູບຮ່າງຄ້າຍຄືຮູບວົງມົນໃດ, ສາມຫຼ່ຽມ, polygon ຫຼືຮູບຮ່າງສະລັບສັບຊ້ອນທີ່ເປັນໄປໄດ້. ວິທີ setShape ຫ້ອງປ່ອງຢ້ຽມສໍາລັບການສ້າງຕັ້ງຊັບສິນ. ອີກເທື່ອຫນຶ່ງແຕ່ວ່າພວກເຮົາຕ້ອງຈື່ໄວ້ວ່າຮູບແບບເຕັມຈໍບໍ່ຄວນຈະຖືກອະນຸຍາດແລະລະບົບປະຕິບັດການສະຫນັບສະຫນູນ translucent.
ຕົວຢ່າງດັ່ງຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນການນໍາໃຊ້ຂອງປ່ອງຢ້ຽມຂອງຮູບ.
Listing3: ລະຫັດຕົວຢ່າງທີ່ສະແດງໃຫ້ເຫັນການນໍາໃຊ້ຂອງປ່ອງຢ້ຽມຂອງຮູບ.
ການນໍາເຂົ້າ javax.swing.*;
ການນໍາເຂົ້າ java.awt *.;
ການນໍາເຂົ້າ java.awt.geom.Ellipse2D;
ການນໍາເຂົ້າ java.awt.geom.GeneralPath;
ສາທາລະນະ ທີ່ຫ້ອງຮຽນ JavaShapedWindow ຂະຫຍາຍ JFrame {
ສາທາລະນະ JavaShapedWindow() {
Super(“ຕັ້ງວິນໂດເປັນຮູບ”);
//ຕັ້ງ undecorated ໄປເພື່ອໃຫ້ໄດ້ຮັບຜົນກະທົບເປັນ
setUndecorated(ຄວາມຈິງ);
//ກໍານົດຂະຫນາດ
setSize(ໃຫມ່ ມິຕິ(250, 250));
//ກໍານົດຄຸນສົມບັດ polygon
= polygon Polygon ໃຫມ່ Polygon();
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(polygon, ຄວາມຈິງ);
gpath.append(newCircle, ຄວາມຈິງ);
//ກໍານົດເສັ້ນທາງ
setShape(gpath);
//ສ້າງຮູບລັກຫມາຍໃສ່ໃນປ່ອງ
getContentPane().setLayout(ໃຫມ່ BoxLayout(getContentPane(), BoxLayout.X_AXIS));
ຕື່ມການ(ຕູ້.createHorizontalGlue());
//ສ້າງຄຸນສົມບັດປ້າຍແລະກໍານົດໄວ້
JLabel newlabel = ໃຫມ່ JLabel(“Java ປ່ອງຢ້ຽມຮູບຮ່າງ”);
newlabel.setForeground(ສີ.ສີຂາວ);
ຕື່ມການ(newlabel);
ຕື່ມການ(ຕູ້.createHorizontalGlue());
//ກໍານົດເນື້ອໃນພື້ນເປັນສີ pane
getContentPane().setBackground(ສີ.cyan);
//ກໍານົດສະຖານທີ່
setLocationRelativeTo(ສູນ);
setVisible(ຄວາມຈິງ);
}
ສາທາລະນະ static void ຕົ້ນຕໍ(ຊ່ອຍແນ່[] args) {
ຊາວຫນຸ່ມບໍລິສັດ GraphicsEnvironment GraphicsEnvironment =.getLocalGraphicsEnvironment();
//ກວດສອບການສະຫນັບສະຫນູນສໍາລັບການ OS ຊັບສິນນີ້
ຖ້າຫາກວ່າ (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT)) {
ລະບົບ.ອອກ.println(“OS ສະຫນັບສະຫນູນ translucent”);
ໃຫມ່ JavaShapedWindow();
}
}
}
ພວກເຮົາຍັງສາມາດປະຕິບັດການປະສົມປະສານຂອງສອງລັກສະນະຄ້າຍຄືປ່ອງຢ້ຽມ translucent ແລະຮູບ. ເພື່ອປະຕິບັດຕາມນີ້, ວິທີການໂທຫາ setOpacity ກັບພາຂອງທ່ານ. ປ່ອງຢ້ຽມຜົນໄດ້ຮັບຈະສະແດງຜົນແບບປະສົມປະ. ແຕ່ພວກເຮົາຄວນຈື່ລະບົບປະຕິບັດການທີ່ຕິດພັນຕ້ອງສະຫນັບສະຫນູນລະດັບ translucent pixels ລວງແລະຄວາມໂປ່ງໃສໃນລະດັບ pixels ລວງ.
ສະຫຼຸບ:
ໃນບົດຄວາມນີ້ພວກເຮົາໄດ້ກວມເອົາຄຸນນະສົມບັດໃຫມ່ໃນບາງ translucent java7.The ແລະລັກສະນະເປັນຮູບປ່ອງຢ້ຽມເປັນຫນ້າສົນໃຈແທ້ແລະເຮັດໃຫ້ອົງປະກອບຂອງເກາະຊາວາ UI ປ່ຽນແປງໄດ້ເພີ່ມເຕີມ. ແຕ່ໃນເວລາດຽວກັນພວກເຮົາຕ້ອງຈື່ໄວ້ວ່າລະບົບການປະຕິບັດການທີ່ຕິດພັນຄວນສະຫນັບສະຫນູນຄຸນສົມບັດທັງຫມົດເຫຼົ່ານີ້. ຖ້າບໍ່ດັ່ງນັ້ນຜົນກະທົບທີ່ຈະບໍ່ສັງເກດ. ດັ່ງນັ້ນໃນການນໍາໃຊ້ຕົວມັນເອງພວກເຮົາກວດເບິ່ງໄດ້ສະຫນັບສະຫນູນ OS ແລະຫຼັງຈາກນັ້ນປະຕິບັດຜົນກະທົບຂອງ. ຂອງຄຸນນະສົມບັດຫລ້າສຸດຂອງເກາະຊາວາເຮັດໃຫ້ການພັດທະນາເພື່ອສ້າງປະເພດທີ່ແຕກຕ່າງກັນຂອງຜົນກະທົບທີ່ຢູ່ເບື້ອງ UI. ດັ່ງທີ່ພວກເຮົາທຸກຄົນຮູ້ວ່າເບິ່ງແລະຮູ້ສຶກວ່າເປັນລັກສະນະສໍາຄັນຂອງຄໍາຮ້ອງສະຫມັກທີ່ໃດ UI. ສະນັ້ນການພັດທະນາເຄື່ອງພ້ອມໃນປັດຈຸບັນທີ່ມີເຄື່ອງມືເພື່ອເຮັດໃຫ້ UI ຫຼາຍສຸກແລະເປັນທີ່ດຶງດູດ.