Làm thế nào để tạo ra Windows mờ và định hình trong Java?

Tổng quan: Trong bài viết này chúng tôi sẽ thảo luận về sự minh bạch và cửa sổ hình khác nhau trong Java. Trong java 7 xoay hỗ trợ tính năng này và làm cho các thành phần giao diện người dùng xoay linh hoạt hơn và người dùng thân thiện.

Giới thiệu: Trong một số ứng dụng, cửa sổ trong suốt là một yêu cầu để hỗ trợ chức năng của nó. Bây giờ trong Java, minh bạch có thể được thực hiện. Một cửa sổ trong suốt được tạo ra bằng cách thay đổi độ trong suốt của nó bằng cách thực hiện một phương pháp gọi là setOpacity trên một thành phần JFrame. Nhưng chúng ta phải hiểu rằng một cửa sổ trong suốt chỉ có thể nếu hệ thống điều hành cơ bản hỗ trợ nó. Và chúng tôi cũng cần phải chắc chắn rằng cửa sổ là không trang trí. Để thực hiện một cửa sổ undecorated, bạn cần phải gọi setUndecorated (đúng) phương pháp. Một thời gian nó cũng là cần thiết để thay đổi hình dạng của một giao diện cửa sổ. Để thực hiện nó, chúng ta cần phải gọi phương thức setShape trong phương pháp componentResized. Nó sẽ tính toán lại hình dạng khi cửa sổ thay đổi kích cỡ.

Trở lại mặt đất: Trong java giao diện người dùng, hỗ trợ cho mờ và hình cửa sổ là một nhu cầu thời gian dài cho Swing / AWT thành phần. Để truy cập phát triển nguồn gốc những tài sản này có sẵn từ thời gian dài trở lại. Nhưng nó không thể truy cập các thành phần cốt lõi java. Trong Java6 trở đi, hỗ trợ cho mờ và cửa sổ hình có sẵn. Thậm chí mỗi mờ mức độ điểm ảnh cũng hỗ trợ trong Java7.

Loại hỗ trợ cho mờ và minh bạch: Java 7 hỗ trợ như sau ba loại hỗ trợ.

Mờ: Trong tính năng này các cửa sổ có thể có màu sắc khác nhau nhưng với cùng một mức độ Opacity. Vì vậy, các giá trị alpha là giống nhau cho tất cả các điểm ảnh. Hiệu ứng này là thích hợp cho phai ra một cửa sổ và sau đó giảm dần và làm tăng giá trị alpha.

PERPIXEL_TRANSLUCENT: Khách sạn này hỗ trợ các giá trị alpha khác nhau trong cửa sổ chính. Này được sử dụng để phai khu vực được lựa chọn của cửa sổ.

PERPIXEL_TRANSPARENT: Khách sạn này hỗ trợ các hình dạng khác nhau của cửa sổ chứ không phải là hình chữ nhật truyền thống. Nếu mỗi điểm ảnh trong suốt được hỗ trợ sau đó hình dạng khác nhau như vòng tròn, tam giác có thể được tạo ra.

Trước khi chúng tôi sử dụng bất kỳ tài sản trên chúng ta cần phải kiểm tra sự hỗ trợ của hệ điều hành nằm dưới. Xét nghiệm này có thể được thực hiện bằng cách sử dụng phương pháp isWindowTranslucencySupported thuộc lớp java.awt.GraphicsDevice. Nó có các loại minh bạch như đầu vào và trả về đúng / sai để chỉ ra sự hỗ trợ.

Hãy để chúng tôi kiểm tra một số mẫu mã để thực hiện các tính năng mờ. Trong ví dụ này, chúng tôi đã tạo ra một cửa sổ trong suốt hình chữ nhật trên một vùng văn bản. Đầu tiên chúng tôi đã vô hiệu hóa chế độ trang trí để có được hiệu quả của tính minh bạch. Sau đó chúng tôi đã kiểm tra nếu hệ thống điều hành cơ bản hỗ trợ hay không. Nếu được hỗ trợ hiệu quả là có thể nhìn thấy trên khung cửa sổ.

Listing1: Mẫu thể hiện Translucency của một cửa sổ JFrame

nhập khẩu java.awt.Color;

nhập khẩu java.awt.GraphicsDevice;

nhập khẩu java.awt.GraphicsEnvironment;

nhập khẩu java.awt.GridBagLayout;

nhập khẩu java.awt.event.ComponentAdapter;

nhập khẩu java.awt.event.ComponentEvent;

nhập khẩu java.awt.geom.Rectangle2D;

nhập khẩu javax.swing.Jframe;

nhập khẩu javax.swing.JTextArea;

nhập khẩu javax.swing.SwingUtilities;

công khai lớp TransRecFrame mở rộng JFrame {

/**

* Tạo ra một khung hình chữ nhật trong suốt với 85% minh bạch

*/

công khai TransRecFrame() {

siêu(“Mờ Khung hình chữ nhật”);

//Thiết lập bố trí

setLayout(mới GridBagLayout());

//Tạo ra một vùng văn bản

thức JTextArea txtArea = mới JTextArea(5, 50);

txtArea.setBackground(Màu.Cyan);

thêm(txtArea);

//Gọi để vô hiệu hóa trang trí

setUndecorated(đúng);

 

//Gọi setShape thay đổi kích thước hình dạng khi widnow thay đổi kích cỡ

addComponentListener(mới ComponentAdapter() {

@ Override

công khai làm mất hiệu lực componentResized(ComponentEvent và) {

setShape(mới Rectangle2D.Double(0, 0, getWidth(), getHeight()));

}

});

//Làm cho cửa sổ 85% minh bạch

setOpacity(0.85f);

//Thiết lập các thông số khác

setLocationRelativeTo(không);

setSize(200, 300);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(đúng);

}

công khai tĩnh làm mất hiệu lực chính(Chuỗi[] args) {

//Tạo môi trường đồ họa

Thanh thiếu niên liên GraphicsEnvironment = GraphicsEnvironment

.getLocalGraphicsEnvironment();

//Kiểm tra hỗ trợ hệ điều hành Mờ

nếu (genv.getDefaultScreenDevice().isWindowTranslucencySupported(

GraphicsDevice.WindowTranslucency.Mờ)) {

System.out.println(“Hệ điều hành hỗ trợ mờ”);

mới TransRecFrame();

}

}

}

Các tính năng để hỗ trợ mờ và hình dạng: Trong Java7 có chủ yếu là ba tính năng có sẵn để hỗ trợ mờ và hình dạng của một cửa sổ.

  • Đầy đủ cửa sổ mờ: Trong phương pháp này cửa sổ đầy đủ là mờ.
  • Mỗi điểm ảnh mờ: Trong phương pháp này là một phần của cửa sổ là mờ
  • Cửa sổ hình: Làm cho cửa sổ có hình dạng khác nhau như ovale, vòng tròn, hình chữ nhật, vv.

Mỗi điểm ảnh mờ:

Chúng tôi đã biết cách để làm cho một cửa sổ mờ hoàn toàn trong ví dụ trước. Bây giờ chúng ta sẽ thảo luận về phần thứ hai của thực hiện một tập hợp các điểm ảnh mờ bằng cách sử dụng màu nền của họ. Có một số hạn chế để thực hiện kịch bản này. Cửa sổ không phải là màn hình đầy đủ và hệ thống phải hỗ trợ mờ mức độ điểm ảnh. Phần còn lại của các thủ tục tương tự như ví dụ trên.

Trong ví dụ sau chúng ta sẽ thấy như thế nào mờ mức độ điểm ảnh được đặt trong một khung.

Listing2: Mẫu thể hiện điểm ảnh hỗ trợ mờ mức.

nhập khẩu javax.swing.*;

nhập khẩu java.awt. *;

nhập khẩu java.awt.event.ActionEvent;

nhập khẩu java.awt.event.ActionListener;

công khai lớp PixelTranslucency mở rộng JFrame {

công khai PixelTranslucency() {

siêu(“Thiết lập mức độ điểm ảnh mờ”);

//Thiết lập kích thước của JFrame

setSize(250, 250);

//Thiết đặt ra

getContentPane().setLayout(mới GridLayout(6, 6));

//Kêu gọi thiết lập điểm ảnh

cho(int i = 0; tôi < 16; i ){

thêm(mới Bảng điều chỉnh điểm ảnh(255 – tôi * 12));

}

//Thiết lập nền và các tài sản khác

setBackground(mới Màu(0, 0, 0, 0));

setLocationRelativeTo(không);

setVisible(đúng);

}

công khai tĩnh làm mất hiệu lực chính(Chuỗi[] args) {

Thanh thiếu niên liên GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Kiểm tra xem cửa sổ hỗ trợ mờ

nếu (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSLUCENT)) {

Hệ thống.ra.println(“Hệ điều hành hỗ trợ mờ”);

mới PixelTranslucency();

}

} riêng tư lớp Bảng điều chỉnh điểm ảnh mở rộng JPanel {

riêng tư Bảng điều chỉnh điểm ảnh(int pixl) {

siêu();

setBackground(mới Màu(0, 0, 255, pixl));

}

}

}

Của Windows hình:

Bây giờ chúng ta sẽ thảo luận về một tính năng quan trọng được hỗ trợ bởi cửa sổ hình Java7.The hỗ trợ tất cả các loại hình bất cứ điều gì được yêu cầu của người sử dụng. Tính năng này giúp bạn tạo nên những hình dạng giống như vòng tròn, tam giác, đa giác hoặc bất kỳ hình dạng phức tạp có thể. Phương pháp setShape của lớp cửa sổ có sẵn để thiết lập tài sản. Nhưng một lần nữa chúng ta phải nhớ rằng chế độ toàn màn hình không nên được cho phép và hệ điều hành hỗ trợ mờ.

Ví dụ sau đây cho thấy việc sử dụng cửa sổ hình.

Listing3: Các mẫu mã cho thấy việc sử dụng cửa sổ hình.

nhập khẩu javax.swing.*;

nhập khẩu java.awt. *;

nhập khẩu java.awt.geom.Ellipse2D;

nhập khẩu java.awt.geom.GeneralPath;

công khai lớp JavaShapedWindow mở rộng JFrame {

công khai JavaShapedWindow() {

siêu(“Thiết lập cửa sổ hình”);

//Thiết lập undecorated OFF để có được một hiệu ứng

setUndecorated(đúng);

//Thiết lập kích thước

setSize(mới Kích thước(250, 250));

//Thiết lập các thuộc tính đa giác

Đa giác đa giác = mới Đa giác();

polygon.addPoint(0, 100);

polygon.addPoint(50, 0);

polygon.addPoint(100, 100);

//Thiết lập các giá trị của hình dạng

Ellipse2D.Double newCircle = mới Ellipse2D.Double(0, 50, 1.0*100, 1.0*100);

//Thiết lập các thuộc con đường chung

GeneralPath gpath = mới GeneralPath();

gpath.append(đa giác, đúng);

gpath.append(newCircle, đúng);

//Thiết lập đường dẫn

setShape(gpath);

//Bố trí thiết lập hộp

getContentPane().setLayout(mới BoxLayout(getContentPane(), BoxLayout.X_AXIS));

thêm(Hộp.createHorizontalGlue());

//Tạo nhãn và thiết lập các thuộc tính

JLabel newlabel = mới JLabel(“Cửa sổ hình chữ java”);

newlabel.setForeground(Màu.trắng);

thêm(newlabel);

thêm(Hộp.createHorizontalGlue());

//Thiết lập nội dung màu nền cửa sổ

getContentPane().setBackground(Màu.cyan);

//Đặt vị trí

setLocationRelativeTo(không);

setVisible(đúng);

}

công khai tĩnh làm mất hiệu lực chính(Chuỗi[] args) {

Thanh thiếu niên liên GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Kiểm tra hỗ trợ hệ điều hành cho khách sạn này

nếu (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT)) {

Hệ thống.ra.println(“Hệ điều hành hỗ trợ mờ”);

mới JavaShapedWindow();

}

}

}

Chúng tôi cũng có thể thực hiện một sự kết hợp của hai tính năng như mờ hình và cửa sổ. Để thực hiện điều này, gọi phương thức setOpacity để khung hình của bạn. Cửa sổ kết quả sẽ hiển thị các hiệu ứng kết hợp. Nhưng chúng ta nên nhớ hệ thống điều hành cơ bản phải hỗ trợ mờ mức độ điểm ảnh và điểm ảnh mức độ trong suốt.

Kết luận:

Trong bài viết này, chúng tôi đã giới thiệu một số tính năng mới trong mờ java7.The và các tính năng cửa sổ hình là thực sự thú vị và làm cho các thành phần java giao diện người dùng linh hoạt hơn. Nhưng đồng thời chúng ta phải nhớ rằng hệ thống điều hành cơ bản nên hỗ trợ tất cả các đặc tính này. Nếu không hiệu quả sẽ không được hiển thị. Vì vậy, trong các ứng dụng riêng của mình, chúng tôi kiểm tra hỗ trợ hệ điều hành và sau đó thực hiện hiệu quả. Các tính năng mới nhất của Java cho phép các nhà phát triển để tạo ra các loại khác nhau của các hiệu ứng trên mặt giao diện người dùng. Như chúng ta đều biết cái nhìn đó và cảm thấy là một khía cạnh quan trọng của bất kỳ ứng dụng dựa trên giao diện người dùng. Vì vậy, các nhà phát triển bây giờ được trang bị các công cụ để làm cho giao diện người dùng dễ chịu hơn và hấp dẫn.

============================================= ============================================== Mua sách Techalpine tốt nhất trên Amazon,en,Thợ điện CT Hạt dẻ,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Thưởng thức blog này,,en,làm ơn mở rộng vốn từ,,en,techalpine.com/apache-mahout-and-machine-learning,,en? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share