Swing은 Java 용으로 설계된 GUI 툴킷입니다.
스윙은 Java Basic 클래스의 일부입니다.
스윙에는 텍스트 상자, 버튼, 분리판 및 테이블과 같은 그래픽 사용자 인터페이스 (GUI) 장치가 포함됩니다.
스윙은 AWT보다 더 나은 화면 디스플레이 요소를 제공합니다. 그들은 순수한 Java로 작성되었으므로 Java 자체와 마찬가지로 플랫폼을 가로 질러 실행할 수 있습니다. 그들은 JFC의 일부입니다. 교체 가능한 패널 및 테마 (다양한 운영 체제 기본값에 대한 특정 테마)를 지원하지만 기본 플랫폼에서 제공하는 장치를 실제로 사용하는 대신 단순히 표면에서이를 모방합니다. 즉, 모든 플랫폼에서 Java가 지원하는 모든 패널을 사용할 수 있습니다. 경량 구성 요소의 단점은 실행이 느리게 진행되며 장점은 모든 플랫폼에서 통합 동작을 채택 할 수 있다는 것입니다.
버튼 구현의 간단한 예를 살펴 보겠습니다.
import java.awt.*; import java.awt.geom.*; import javax.swing.*; 클래스 rbutton은 jbutton {public rbutton (string label) {super (label); //이 선언은 타원 대신 원으로 확장됩니다. 치수 크기 = getPreferredsize (); size.width = size.height = math.max (size.width, size.height); setPreferredSize (size);이 호출은 JBUTTON이 배경을 그리지 않지만 원형 배경을 그릴 수있게합니다. SetContentAreafliled (false); this.setbackground (color.gray);} // 원의 배경과 레이블을 그려 보호 된 void paintcomponent (그래픽 g) {if (getModel (). isarmed ()) {// 원형 버튼 클래스 G.SetColor (color.lightgray)의 속성으로 강조 표시된 색상을 선택할 수 있습니다 (g.setcolor); 0, getsize (). width -1, getsize (). 높이 -1); //이 호출은 레이블을 그립니다. super.paintcomponent (g);} // 간단한 아크를 사용하여 버튼의 경계를 그립니다. 보호 된 보이드 페인트 보더 (그래픽 g) {g.setColor (getforeground ()); g.drawoval (0, 0, getsize (). width -1, getsize (). 높이 -1);} // 클릭 이벤트 모양 감지; 공개 부울은 (int x, int y) {// 버튼 크기가 생성되면 새 형상 개체가 생성됩니다. if (shape == null ||! shape.getBounds (). equals (getBounds ())) {shape = new Ellipse2d.float (0, 0, getWidth (), getheight ();} return shape.contains (x, y);} // test probloy public static void main (string [] args). jbutton button = new rbutton ( "잭팟"); imageicon ic = new imageicon ( "e : //clientformssql//icons//item_group.gif"); jbutton button2 = new jbutton (ic); button.setbackground (color.gray); //이 버튼을 표시 할 프레임 생성 jframe frame = new jframe (); frame.setDefaultCloseOperation (jframe.exit_on_close); // frame.getContentPane (). stetbackground (color.gray); frame.getContentPane () FlowLayout ()); frame.setsize (200, 200); frame.setVisible (true);}}결과:
다음으로 간단한 클릭 이벤트를 구현하는 버튼의 Java 예제를 공유하겠습니다.
다음은 라운드 스윙 버튼을 만드는 팁입니다. 실제로이 트릭은 모든 모양의 버튼에 편리하게 적용 할 수 있지만 둥근 버튼 만 만듭니다. 둥근 버튼을 만들면 두 가지 작업을 수행해야합니다. 첫 번째는 원을 그리기 위해 적절한 도면 방법을 과부하시키는 것입니다. 두 번째는 원형 버튼 범위를 클릭 할 때만 버튼이 응답하도록 일부 이벤트를 설정하는 것입니다 (원형 버튼이 포함 된 사각형 범위가 아님).
import java.awt.*; import java.awt.geom.*; import javax.swing.*; Public Class RoundButton은 JBUTTON {public RoundButton (String Label) {super (label); //이 선언이 타원 대신에 원으로 확장됩니다. 치수 크기 = getPreferredsize (); size.width = size.height = math.max (size.width, size.height); setPreferredSize (size);이 호출은 JBUTTON이 배경을 그리지 않지만 원형 배경을 그릴 수있게합니다. setContentAreafild (false);} // 원의 배경과 레이블을 그리는 원형 void paintcomponent (그래픽 g) {if (getModel (). isArmed ()) {// 원형 버튼 클래스 G.SetColor (color.lightgray)의 속성으로 강조 표시된 색상을 선택할 수 있습니다 (getbackground (gecolor) g.fall (); getsize (). width -1, getsize (). 높이 -1); //이 호출은 레이블을 그립니다. super.paintcomponent (g);} // 간단한 아크를 사용하여 버튼의 경계를 그립니다. 보호 된 보이드 페인트 보더 (그래픽 g) {g.setColor (getforeground ()); g.drawoval (0, 0, getsize (). width -1, getsize (). 높이 -1);} // 클릭 이벤트 모양 감지; 공개 부울은 (int x, int y) {// 버튼 크기가 생성되면 새 형상 개체가 생성됩니다. if (shape == null ||! shape.getBounds (). equals (getBounds ())) {shape = new Ellipse2d.float (0, 0, getWidth (), getheight ();} return shape.contains (x, y);} // test probloy public static void main (string [] args). jbutton button = new RoundButton ( "잭팟"); button.setbackground (color.green); //이 버튼을 표시 할 프레임을 생성합니다. jframe frame = new jframe (); frame.getContentPane (). stetbackground (color.yellow); frame.getContentPane (). add (button); frame.getContentPane (). setLayout (); frame.setsize (150, 150); frame.setvile (true);}}}}}}}.결과:
클릭 이벤트 :
우리는 JButton의 대부분의 기능을 보존하고 싶기 때문에 RoundButton 클래스가 Jbutton 클래스를 상속받을 수 있도록했습니다. RoundButton 생성자에서 SetContentAreafilled () 메소드가 호출됩니다. 이것은 버튼이 직사각형 초점 영역이지만 배경은 아닙니다.
이제 우리는 원형 배경을 그려야합니다. 이것은 PaintComponent () 메소드를 과부하시켜 달성됩니다. 이 메소드는 Graphics.filloval () 메소드를 사용하여 단단한 원을 그립니다. 그런 다음 PaintComponent () 메소드는 super.paintcomponent ()를 호출하여 단단한 원에 레이블을 그립니다.
이 예제는 또한 Paintborder () 메소드를 무시하여 원형 버튼의 경계에 가장자리를 그립니다. 국경을 원하지 않으면이 방법을 과부하시킬 수도 있습니다. 이 메소드는 Draphics.drawoval () 메소드를 호출하여 원의 경계에 얇은 테두리를 그립니다.
참고 : JDKTM1.2.2에서 마우스를 버튼 범위로 또는 외부로 끌 때 JBUTTON의 동작에는 작은 버그가 있습니다. 이론적으로, 원형 버튼에서 마우스를 클릭 한 다음 버튼의 경계에서 마우스를 끌면 버튼이 바뀌어야합니다. 마우스를 버튼의 경계로 드래그하면 버튼이 모양에 응답해야합니다. 불행히도,이 동작을 포함하는 코드는 continains () 메소드를 호출 할 수 없습니다. 대신 버튼의 '제한 범위'만 사용하는 것입니다 (버튼을 포함하는 최소 직사각형 범위). 원의 경계 내에서 마우스를 약간 드래그하면 원의 범위를 남겨 두지 만 경계가 아닌 경우 버튼은 모양이 변경되지 않습니다.
요약
위의 것은 스윙 라운드 버튼 인스턴스 코드를 구현하기위한 Java 프로그래밍에 관한이 기사의 모든 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!