라벨이 GUI인 게시물 표시

JAVA Tree CellRenderer - Icon setting

트리의 노드형태는 리스트와 콤보박스와 마찬가지로 CellRenderer인터페이스를 통해 관리한다. TreeCellRenderer라는 인터페이스가 있고, 이것을 구현한 DefaultTreeCellRenderer가 존재한다.  DefaultCellRenderer에는 노드의 아이콘을 변경할 수 있는 메소드 들이 존재한다.  void setLeafIcon(Icon icon) - leafnode 의 아이콘을 icon으로 설정한다. void setClosedIcon(Icon icon) - 닫혀진 node의 아이콘을 icon으로 설정한다. void setOpenIcon(Icon icon) - 열린 node의 아이콘을 icon으로 설정한다.   다음 예제는 DefaultTreeCellRender를 이용하여 아이콘을 변경하는 예제이다.  순서는 다음과 같다.  트리의 노드들을 생성하고 , 붙여주어서 트리를 만든다. DefaultCellRenderer객체를 하나 만들고, 아이콘 설정 메소드들를 이용하여 아이콘 설정 트리의 setRenderer()메소드를 이용하여 renderer를 변경한다. 완성된 트리를 pane에 붙임으로 완성한다. import javax.swing.*; import javax.swing.tree.*;;   public   class  TreeIcon  extends   JFrame {      protected   JTree  tree;          public  TreeIcon ( ) {          super ( "아이콘이 있는 트리" ) ;                  //트리만들어주기   ...

JAVA Drag and Drop Demo

DragSource에서 DropTarget으로 <<Transferable>> Data가 전송되는 일련의 과정. DropTarget 생성자 중 가장 매개변수가 많은 것을 살펴보자. DropTarget(Component c, int ops,DropTargetListener dtl,boolean act,FlavorTree ft) 예) target =  new   DropTarget ( editor, DnDConstants . ACTION_COPY_OR_MOVE ,                  ( DropTargetListener )   this , true , null );  매개변수중 int ops부분을 살펴보자. DnDConstants.ACTION_COPY_OR_MOVE 가 보인다. DnDConstants 클래스는 Drag & Drop이 발생하는 경우 처리되는 오퍼레이션의 형태를 표현한 것이다. ACTION_COPY_OR_MOVE 는 복사 혹은 이동을 표현한것이고, ACTION_COPY는 복사만, ACTION_MOVE는 이동만 표현한것 등등 이 있다. *DropTagetListener를 구현하는 과정에서 매개변수로 전달되는 것들이 미묘하게 다르다 ㅠ 드랍타겟 생성 ->드래그소스에서 읽어온 정보들을 Transferable하게 적재한다. ->드랍타켓에 운반 완료. 윈도우탐색기의 텍스트파일을 드래그앤 드랍하면 내용을 가져오는 예제 DNDText.java import java.io.*; import java.awt.dnd.*; import java.awt.datatransfer.*; import javax.swing.*;   public   class  DnDText  extends   JFrame   im...

JAVA LookAndFeel Demo

이미지
스윙의 컴포넌트 스퇄이 달라지게 할 수 있당. UIManager . setLookAndFeel ( "com.sun.java.swing.plaf.motif.MotifLookAndFeel" ) ; SwingUtilities . updateComponentTreeUI ( this ) ; UIManager를 통해서 룩앤필 갈아끼우고 SwingUtiliteis.update()를 통해서 UI를 업데이트시킨다.  이 모든게 프로그램 실행중에 이루어질수 있다는 사실! 차암 놀랍죠~잉. LookNfeelTest.java

JAVA JInternalFrame Demo

이미지
이클립스나, 포토샵처럼 한 프레임 안에 또 다른 프레임들이 있게 만들어 주자. JInternalFrame(String title) : title을 타이틀로 하는 내부 프레임을 생성한다. JInternaFrame(String title,boolean resizable,boolean closable, boolean iconifiable) 여기에서 iconifiable이 true이면 최소화했을때, 아이콘형태로 메인 프레임위에 남는다. 메인 프레임 위에 아이콘이 남게 하려면, 그냥 프레임위에서는 안되고, JDesktopPane을 붙여주고 그위에 inner Frame을 붙여주면 된다. InnerFrameDemo.java

JAVA JTree Demo

이미지
노드를 하나씩 만들어서 , 차례로 붙여주면 된다. JTreeDemo.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.tree.*; public   class  JTreeDemo  extends   JFrame   implements   MouseListener {      protected   JTree  tree;      public  JTreeDemo ( ) {          super ( "JTree Demo" ) ;                  DefaultMutableTreeNode  jcomponent=              new   DefaultMutableTreeNode ( "JComponent" ) ;          DefaultMutableTreeNode  jpanel=              new   DefaultMutableTreeNode ( "JPanel" ) ;          DefaultMutableTreeNode  jtextcomponent=              new   DefaultMutableTreeNode ( "JTextComponent" ) ;       ...

JAVA JTextComponent

이미지
스윙에서 텍스트와 관련된 컴포넌트들은 JTextComponent 를 상속받는다. 텍스트 관련 클래스들은 용도에 따라 아래와 같이 세가지로 분류 된다. 텍스트 컨트롤 : 한줄을 입력할 수 있는 텍스트클래스  JTextField :한줄의 텍스트를 다룬다.  JPasswardField : 패스워드 형태의 텍스트를 다룬다.   JFomattedTextFeild : 규격화된 형태의 텍스트를 다룬다. 단순 텍스트 : 여러줄을 입력할 수 있지만, 한가지의 폰트로 동일한 스타일의 문자열만 사용 JTextArea 스타일 : 하나이상의 폰트를 이용해서 화면에 보여줄 수 있다. JEditorPane JTextPane  간단한 Demo SwingText.java

JAVA Spinner

이미지
Spinner는 일반적으로 날짜 설정할때 보이는 객체와 같이 화살표가 옆에 붙어서 증감상황을 표현해주고, 직접 키보드를 이용해서 수정할 수도 있는 객체이다. JSpinner의 생성자는 다음과 같다. JSpinner() : 최대값과 최소값이 정해지지않은 JSpinner객체 생성 JSpinner(SpinnerModel model) : Spinner의 Model을 넘겨받아서 객체 생성 SpinnerModel에는  SpinnerNumberModel : 숫자를 다루는 스피너 SpinnerDateModel : 날짜를 다루는 스피너 SpinnerListModel : 배열, 리스트등의 객체를 넘겨받아서 다루는 스피너  등이 존재한다. 간단한 데모 SpinnerTest.java

JAVA CellRenderer Demo

이미지
List의 하나의 구성요소들이 표현되는 하나하나를 Cell이라고 하고, 그 Cell을 Render를 통해서 원하는 형태로 표현할 수 있게 해준다. 버튼을 수정하는 것처럼, List, ComboBox,Tree등 Cell을 편집 할 수 있는데, 그러기 위해서는 Renderer Interface를 구현하여야 한다. List의 경우, ListCellRenderer Interface를 구현해야한다. default Renderer들은 기본적으로 JLabel을 상속받음으로 JLabel의 메소드를 사용할 수 있다. ListCellRenderer를 변형하여, List와 관련된 아이콘을 찾아서 같이 표현해주는 Renderer를 구현해보자. ListCellRenderer에는 public  Component  getListCellRendererComponent( JList  list, Object  value,int index             ,boolean isSelected,boolean CellHasFocus)  ListCellRenderer를 구성하는 Component를 가져오는 메소드가 있다. IconCellRenderer.java import java.util.*; import javax.swing.*; import java.awt.*; public   class  IconCellRenderer  extends   DefaultListCellRenderer {      protected   Hashtable  icons;      public  IconCellRenderer ( ) {          //key - value 연...