어떻게 자바에서 반투명 모양의 창을 만들?

개요: 이 문서에서 우리는 자바의 투명성과 다른 모양의 창에 대해 설명합니다. 자바에있는 7 스윙이이 기능을 지원하고 스윙 UI 구성 요소가보다 유연하고 사용자 친화적 인 만들기.

소개: 일부 응용 프로그램에서, 투명 창은 해당 기능을 지원하는 요구 사항입니다. 이제 자바, 투명성이 구현 될 수있다. 반투명 창 JFrame의 구성 요소에 setOpacity라는 메서드를 구현하여 불투명도를 변경하여 생성됩니다. 그러나 우리는 기본 운영 체제가 지원하는 경우 반투명 창에서만 가능하다는 것을 이해해야합니다. 그리고 우리는 또한 창을 장식되지 않았는지 확인해야합니다. 창 장식되지 만들려면, 당신은 setUndecorated 호출 할 필요가 (참된) 방법. 시간은 또한 윈도우 UI의 모양을 변경하는 데 필요한. 이를 구현하려면, 우리는 componentResized 메서드 내에서 setShape 메서드를 호출 할 필요가. 창의 크기를 조정할 때 그것은 계산의 모양을 것이다.

다시 지상: 자바 UI에서, 투명감과 모양의 윈도우에 대한 지원은 스윙 / AWT 구성 요소에 대한 오랜 시간이 요구되었다. 네이티브 개발 접근에 대해 이러한 속성은 뒤 긴 시간부터 사용할 수 있습니다. 그러나 핵심 자바 구성 요소에 액세스 할 수 없습니다. Java6 이후에, 투명도에 대한 지원과 모양의 창을 사용할 수 있습니다. 심지어 픽셀 수준의 투명도 당은 Java7에 지원합니다.

투명감과 투명성에 대한 지원의 종류: 자바 7 지원의 다음과 같은 세 가지 유형을 지원.

TRANSLUCENT: 이 기능의 창을하지만, 불투명도 같은 레벨의 다른 색깔을 가질 수 있습니다. 그래서 알파 값은 모든 픽셀에 대해 동일합니다. 이 효과는 창을 퇴색에 적합하며 점차적으로 감소하고 알파 값을 증가.

PERPIXEL_TRANSLUCENT: 이 속성은 윈도우 자체에서 다른 알파 값을 지원. 이 창의 선택 영역 퇴색하는 데 사용됩니다.

PERPIXEL_TRANSPARENT: 이 속성은 기존의 사각형이 아닌 윈도우의 다른 모양을 지원합니다. 원과 같은 다른 모양 다음 지원되는 픽셀의 투명도 당 경우, 삼각형을 만들 수 있습니다.

우리는 위의 속성을 사용하기 전에 우리는 거짓말 운영 체제에서의 지원을 테스트해야. 테스트 방법을 사용하여 수행 할 수있는 것은 java.awt.GraphicsDevice 클래스에 속하는 isWindowTranslucencySupported. 그것은 입력으로 투명성의 형식을 취하고 지원을 나타 내기 위해 참 / false를 반환.

우리가 투명 기능을 구현하는 샘플 코드를 확인하자. 이 예제에서는 텍스트 영역에 사각형의 반투명 창을 만들었습니다. 먼저 우리는 투명성의 효과를 얻을 수있는 훈장 모드를 비활성화. 기본 운영 체제가 지원하지 않은 경우 또는 다음 우리는 확인했습니다. 지원하는 경우 효과는 프레임 창을 볼 수 있습니다.

목록 1: 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를() {

@ 재정의

공공의 무효 componentResized(ComponentEvent 및) {

setShape(새로운 Rectangle2D.Double(0, 0, getWidth(), getHeight()));

}

});

//창을 만들 85% 투명한

setOpacity(0.85에프);

//다른 매개 변수를 설정

setLocationRelativeTo(제로);

setSize가(200, 300);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(참된);

}

공공의 정적 인 무효 주(끈[] 인수) {

//그래픽 환경을 만들

청소년 벤처 GraphicsEnvironment로 = GraphicsEnvironment로

.getLocalGraphicsEnvironment();

//OS를 지원하는지 확인 투명

(genv.getDefaultScreenDevice().isWindowTranslucencySupported(

GraphicsDevice.WindowTranslucency.TRANSLUCENT)) {

System.out.println(“OS 투명감을 지원”);

새로운 TransRecFrame();

}

}

}

투명감과 모양을 지원하는 기능: Java7에 투명감과 윈도우의 모양을 지원할 수는 주로 세 가지 기능이 있습니다.

  • 전체 창 투명감: 이 방법에서는 전체 창 투명감이.
  • 픽셀 투명도 당: 이 방법 창 부분은 반투명
  • 모양의 창: 의 ovale 같은 다른 모양의 창을, 원, 직사각형 등.

픽셀 투명도 당:

우리는 이미 앞의 예제에서 전체 창을 반투명을 만드는 방법을 보았다. 이제 우리는 자신의 배경 색상을 사용하여 반투명 픽셀의 집합을 만드는 두 번째 부분에 대해 설명합니다. 이 시나리오를 구현하는 몇 가지 제한이 있습니다. 창을 전체 화면으로해서는 안되고 시스템이 픽셀 수준의 투명도를 지원해야합니다. 절차의 나머지는 위의 예와 유사합니다.

다음 예에서 우리는 픽셀 수준의 투명도가 프레임에 설정하는 방법을 볼 수 있습니다.

Listing2: 견본 표시하는 픽셀 수준의 투명도 지원.

수입 javax.swing.*;

수입 java.awt이. *;

수입 java.awt.event.ActionEvent;

수입 java.awt.event.ActionListener;

공공의 클래스 PixelTranslucency 확장 JFrame의 {

공공의 PixelTranslucency() {

슈퍼(“픽셀 수준의 투명도를”);

//JFrame의 크기를 설정

setSize가(250, 250);

//레이아웃 설정

getContentPane().setLayout(새로운 GridLayout으로(6, 6));

//픽셀 설정을 호출

(INT 난 = 0; 나는 < 16; 난 ){

추가(새로운 픽셀 패널(255 – 나는 * 12));

}

//배경 및 기타 속성을 설정

setBackground의(새로운 색(0, 0, 0, 0));

setLocationRelativeTo(제로);

setVisible(참된);

}

공공의 정적 인 무효 주(끈[] 인수) {

청소년 벤처 GraphicsEnvironment로 = GraphicsEnvironment로.getLocalGraphicsEnvironment();

//윈도우를 지원하는지 확인 투명

(genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSLUCENT)) {

체계.밖으로.나서 println(“OS 투명감을 지원”);

새로운 PixelTranslucency();

}

} 개인 클래스 픽셀 패널 확장 JPanel을 {

개인 픽셀 패널(INT pixl) {

슈퍼();

setBackground의(새로운 색(0, 0, 255, pixl));

}

}

}

모양의 윈도우:

이제 우리는 Java7.The 모양의 창이 지원 또 다른 중요한 기능에 대해 설명합니다하는 것은 사용자의 요구 사항이 될 어떤 형태의 모든 유형을 지원합니다. 이 기능은 원과 같은 어떤 모양을 만들 수 있습니다, 삼각형, 다각형이나 가능한 복잡한 모양. 창 클래스의 setShape 방법은 속성을 설정 가능합니다. 그러나 다시 우리는 전체 화면 모드를 사용할 수 없습니다 것을 기억해야하고 운영 체제가 투명도를 지원.

다음 예는 모양 창 사용법을 보여줍니다.

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);

//도형의 값을 설정합니다

=를 newCircle Ellipse2D.Double 새로운 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));

추가(상자.createHorizo​​ntalGlue());

//레이블 집합 속성을 만들

JLabel newlabel = 새로운 JLabel의(“자바 모양의 창”);

newlabel.setForeground(색.화이트);

추가(newlabel);

추가(상자.createHorizo​​ntalGlue());

//콘텐츠 창 배경색을 설정

getContentPane().setBackground의(색.시안);

//위치 설정

setLocationRelativeTo(제로);

setVisible(참된);

}

공공의 정적 인 무효 주(끈[] 인수) {

청소년 벤처 GraphicsEnvironment로 = GraphicsEnvironment로.getLocalGraphicsEnvironment();

//이 속성의 OS를 지원 확인

(genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT)) {

체계.밖으로.나서 println(“OS 투명감을 지원”);

새로운 JavaShapedWindow();

}

}

}

우리는 또한 투명감과 모양의 창문과 같은 두 가지 기능의 조합을 구현할 수 있습니다. 이를 구현하려면, 귀하의 프레임에 setOpacity 메서드를 호출. 결과 창은 결합 효과를 표시합니다. 그러나 우리는 기본 운영 체제는 픽셀 수준의 투명감과 픽셀 수준의 투명도를 지원해야합니다 기억해야한다.

결론:

이 문서에서 우리는 java7.The 투명감 몇 가지 새로운 기능을 포함하고 모양 창 기능은 정말 흥미 및 자바 UI 구성 요소를 더 유연하게. 그러나 동시에 우리는 기본 운영 체제가 이러한 모든 속성을 지원해야한다는 기억해야한다. 그렇지 않으면 효과가 표시되지 않습니다. 따라서 응용 프로그램 자체에서 우리는 OS 지원을 확인하고 효과를 구현. 자바의 최신 기능은 개발자가 UI 측면에서 효과의 다른 유형을 만들 수 있습니다. 우리 모두가 모습을 알고 느낌으로 모든 UI 기반 응용 프로그램의 중요한 측면이다. 따라서 개발자는 이제 UI는 더 쾌적하고 매력있는 도구와 함께 장착되어 있습니다.

============================================= ============================================== 아마존에서 최고의 Techalpine 책을 구입하십시오,en,전기 기술자 CT 밤나무 전기,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share