JTree

 



트리는 계층적인 데이터를 표시하는데 사용되는 컴포넌트이다.

 

- JTree는 단순히 데이터의 뷰만을 제공하기 때문에 트리 객체 안에는 데이터가 저장되지 않는다.

 

각각의 트리는 하나의 루트 노드(root node)를 가지고 있다다른 노드들(child)은 루트 노드에서 파생된다.

 

노드는 자신의 자식 노드를 가질 수 있고사용자가 노드를 클릭하면 자식 노드를 보이게 할 수도 있다.

 

트리는 스크롤 페인(JScrollPane) 속에 넣는 것이 일반적이다.

 

노드의 확장 상태는 이벤트를 사용하여 감지할 수 있다.


 JTree

 생성자

 JTree()

 비어있는 트리를 생성한다.

 JTree(TreeNode root)

 매개변수로 주어진 노드를 루트 노드로 하는 트리를 생성한다.

 메소드

 void setVisibleRowCount(int row)

 화면에 나타나는 행의 수를 설정한다.

 Object getLastSelectedPathComponent()

 현재 선택된 노드를 반환한다.

 ThreeSelectionModel getSelectionModel()

 트리의 선택 모델을 반환한다.

 Object getUserObject()

 노드로 지정된 객체를 반환한다

 보통 이벤트 처리 시 노드의 이름을 가져올 때 사용한다.

 노드 생성자

 DefaultMutableTreeNode()

 비어있는 트리 노드를 생성한다.

 DefaultMutableTreeNode(Object obj)

 지정된 객체를 가지고 트리 노드를 생성한다.

 노드 수정 메소드

 void add(TreeNode child)

 자식 노드를 추가한다.

 TreeNode getFirstChild() 현재 노드의 첫 번째 자식 노드를 반환한다.
 DefaultMutableTreeNode getNextSibling() 현재 노드의 다음 형제 노드를 반환한다.
 TreeNode getParent() 현재 노드의 부모 노드를 반환한다.

 이벤트 처리

 addTreeSelectionListener(리스너 타입)

 노드를 선택할 때마다 트리 선택 이벤트(TreeSelectionEvent)가 발생하며, TreeSelectionListener 인터페이스를 구현함으로서 이벤트를 처리한다.






- JTree 예제

public class TreeTest extends JFrame implements addTreeSelectionListener {

	//FIELDS
	private JPanel treePanel = new JPanel();
	private JScrollPane treeScroll;
	private JTree tree;
	private JLabel label;
	private DefaultTreeModel model; //트리 모델 인스턴스
	
	//CONSTRUCTOR
	TreeTest() {
		setTitle("트리 예제");
		setSize(400, 500);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		DefaultMutableTreeNode root = new DefaultMutableTreeNode("플레이 리스트");
		DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("힙합");
		DefaultMutableTreeNode child2 = new DefaultMutableTreeNode("재즈");
		DefaultMutableTreeNode child3 = new DefaultMutableTreeNode("락");
		DefaultMutableTreeNode child4 = new DefaultMutableTreeNode("가요");
		DefaultMutableTreeNode child5 = new DefaultMutableTreeNode("팝송");
		DefaultMutableTreeNode child6 = new DefaultMutableTreeNode("동요");

		root.add(child1);
		root.add(child2);
		root.add(child3);
		root.add(child4);
		root.add(child5);
		root.add(child6);

		DefaultMutableTreeNode child6child1 = new DefaultMutableTreeNode("아기공룡둘리");
		DefaultMutableTreeNode child6child2 = new DefaultMutableTreeNode("네모의 꿈");
		DefaultMutableTreeNode child6child3 = new DefaultMutableTreeNode("민들레꽃");
		
		child6.add(child6child1);
		child6.add(child6child2);
		child6.add(child6child3);

		tree = new JTree(root);

		/* 또는 아래와 같이 하여도 된다.
		tree = new JTree();
		model = new DefaultTreeModel(root);
		tree.setModel(model);
		*/

		tree.setVisibleRowCount(10);
		tree.addTreeSelectionListener(this);
		
		treeScroll = new JScrollPane(tree);
		panel.add(treeScroll);
		panel.add(label);
		add(panel);

		setVisible(true);
	}

	//METHODS
	@Override
	public void valueChanged(TreeSelectionEvent e) {
		DefaultMutableTreeNode node; 
		node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
		
		if(node == null) return;

		String nodeName = (String) node.getUserObject(); //캐스팅은 꼭해주어야 한다.
		label.setText("선택된 노드 : " + nodeName);
	}

	public static void main(String[] args) {
		new TreeTest();
	}
}






 

 JSlider

 




슬라이더는 사용자가 특정 범위 안에서 하나의 값을 선택할 수 있는 컴포넌트이다.

 

미디어 옆에 볼륨을 조정할 때 자주 사용된다.

 

JSlider

 생성자

  JSlider()

 0~100사이의 수평 슬라이더를 생성한다.

  JSlider(int min, int max)

 지정된 최소값과 최대값을 가지는 슬라이더를 생성한다.

  Jslider(int min, int max, int value)

 위와 같으면 value는 슬라이더의 초기값이다.

 메소드

  void setMajorTickSpacing(int space)

 큰 눈금 간격을 설정한다.

  void setMinortickSpacing(int space) 

 작은 눈금 간격을 설정한다.

  void setPaintTicks(booelan visible) 

 눈금을 표시할 지를 설정한다.

  void setPaintLabels(boolean visible)

 값을 레이블로 표시할지 설정한다.

 이벤트 처리

  addChangeListener(ChangeListener cl)

 슬라이더의 값이 변경되었을 경우 ChangeEvent가 발생한다체인지 이벤트는 ChangListener 인터페이스를 구현하여 처리한다.




- JSlider 예제


public class SliderTest extends JFrame implements ChangeListener { //FIELDS public static final int INIT_VAL = 15; private JButton button = new JButton(); private JPanel panel = new JPanel(); private JLabel label = new JLabel("슬라이더 움직이기", JLabel.CENTER); private JSlider slider; //CONSTRUCTOR SliderTest() { setTitle("슬라이더 예제"); setSize(300, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); label.setAlignmentX(Component.CENTER_ALIGNMENT); panel.add(label); slider = new JSlider(0, 20, INIT_VAL); slider.setMagorTickSpacing(5); //큰 눈금 간격 5로 설정 slider.setMinorTickSpacing(1); //작은 눈금 간격 1로 설정 slider.setPaintTicks(true); //눈금을 표시한다. slider.setPaintLabels(true); //값을 레이블로 표시한다. slider.addChangeListener(this); panel.add(slider); button.setText("멍멍"); button.setSize(INIT_VAL, INIT_VAL); panel.add(button); add(panel); setVisible(true); } //METHODS @Override public void stateChanged(Change Event e) { JSlider selectedSlide = (JSlider) e.getSource(); if(!selectedSlide.getValueIsAdjusting()) { int val = (int) source.getValue(); button.setSize(val*5, val*5); //슬라이더 값에 따라 버튼 크기 조절 } } public static void main(String[] args) { new SliderTest(); } }






'Programming Language > JAVA' 카테고리의 다른 글

30. JColorChooser, JFileChooser - 색상 선택기, 파일 선택기  (0) 2017.06.29
29. JTree - 트리  (0) 2017.06.29
27. JSpinner - 스피너  (0) 2017.06.29
26. JComboBox - 콤보박스  (0) 2017.06.29
25. JList - 리스트  (0) 2017.06.25

 

 

 

 JSpinner




스피너는 두 개의 화살표가 붙은 텍스트 필드이다.

 

텍스트 필드는 숫자를 표현하고 있고 사용자는 화살표를 클릭하여 값들을 증가 또는 감소시킬 수 있다.

 

주로 지정된 범위에서 개수를 정하거나날짜를 선택할 때 사용한다그 외 다른 용도로도 사용가능하다.

 

JSpinner

 생성자

  JSpinner()

  정수를 가지고 있는 SpinnerNumberModel이 초기값으로 0이 되어 새로운 스피너 객체를 생성한다.

  JSpinner(SpinnerModel sm)

 새로운 스피너 모델을 지정받은 스피너 객체를 생성한다.

 메소드

  void setValue(Object obj)

 값을 설정한다.

  Object getValue()

 선택된 값을 반환한다.

  Object getNextValue() 

 선택된 값의 다음 값을 반환한다.

  Object getPreviousValue()

 선택된 값의 이전 값을 반환한다.


 

스피너 모델(SpinnerModel를 상속받는다.)


String[] names = {“김철수”, “김영희”, “김숙자”, “김자몽”};

SpinnerListModel listModel = new SpinnerListModel(names);

 

SpinnerNumberModel numberModel = new SpinnerNumberModel(0, 1, 2, 3, 4, 5);


//최소날짜(start)와 최대날짜(end)를 지정할 수 있다. Calendar 객체는 증가&감소가 된다.

SpinnerDataModel dateModel = new SpinnerDateModel(value, start, end, Calendar.YEAR); 


- 스피너 모델은 총 4가지가 있다.

  • AbstractSpinnerModel

  • SpinnerDateModel

  • SpinnerListModel

  • SpinnerNumberModel







- JSpinner 예제

 

public class SpinnerTest extends JFrame {

	//FIELDS
	private String[] name = {"김철수", "김숙자", "김영희", "김자몽"};
	private JPanel panel = new JPanel();
	private JSpinner spinner;

	//CONSTRUCTOR
	SpinnerTest() {
		setTitle("스피너 예제");
		setSize(500, 200);
		setDefaultCloseOperation(JFrame.EXITE_ON_CLOSE);

		// List Model
		SpinnerListModel listModel = new SpinnerListModel(name);
		spinner = new JSpinner(listModel);
		panel.add(spinner);

		// Number Model
		SpinnerNumberModel numberModel = new SpinnerNumberModel(1, 2, 3, 4, 5, 6);
		spinner = new JSpinner(numberModel);
		panel.add(spinner);

		// Date Model
		Calendar calendar = Calendar.getInstance(); //갤린더 객체 얻기
		Date value = calendar.getTime(); //현재 시간 얻기
		
		calendar.add(Calendar.YEAR, -50); // 50년 전의 날짜 얻기
		Date start = calendar.getTime(); //50년 전의 날짜를 최소 날짜로 지정
		
		calendar.add(Calendar.YEAR, 100); // 50년 뒤의 날짜 얻기 +50하면 현재날짜가됨.
		Date end = calendar.getTime(); //50년 뒤의 날짜를 최대 날짜로 지정

		SpinnerDateModel dateModel = new SpinnerDateModel(value, start, end, Calnedar.YEAR);
		spinner = new JSpinner(datemodel);
		spinner.setEditor(new JSpinner.DateEditor(spinner, "yyyy/MM/dd")); //날짜 편집기 지정
		panel.add(spinner);

		add(panel);
		setVisible(true);
	}

	//METHODS
	public static void main(String[] args) {
		new SpinnerTest();
	}
}


'Programming Language > JAVA' 카테고리의 다른 글

29. JTree - 트리  (0) 2017.06.29
28. JSlider - 슬라이더  (0) 2017.06.29
26. JComboBox - 콤보박스  (0) 2017.06.29
25. JList - 리스트  (0) 2017.06.25
24. JScrollPane - 스크롤 페인  (0) 2017.06.25

 



 JComboBox

 



리스트처럼 여러 항목 중에서 하나를 선택하는데 사용할 수 있다차이가 있다면단 하나만 선택할 수 있다는 것이다.

 

콤보 박스는 리스트와 텍스트 필드가 결합된 형태로 보면 된다.

 

텍스트 필드가 결합된 형태라 하더라도 수정할 수 없으며 선택 여부만 결정한다.

 


JComboBox

 생성자

  JComboBox()

  리스트가 없는 빈 콤보 박스를 생성한다.

 메소드

  void addItem(Object obj)

  현재 위치의 앞에 콤보 박스에 지정된 객체를 추가한다.

  void insertItemAt(Object obj, int index)

  지정된 위치에 객체를 삽입한다.

  Object getItemAt(int index)

  콤보 박스의 해당 인덱스를 가진 선택 항목을 가져온다.

  Object getSelectedItem()

  콤보 박스에서 선택한 항목을 가져온다.

  void removeAllItems() 

  모든 항목을 삭제한다.

  void removeItemAt(int index)

  해당 인덱스의 항목을 삭제한다.

  void removeItem(Object obj) 

  지정된 객체를 삭제한다.

  int getItemCount()

  항목의 개수를 반환한다.

  void setEditable(boolean editable) 

  콤보 박스에 사용자가 입력할 수 있는지 설정한다.

  boolean isEditable()   콤보 박스에 사용자의 입력 여부를 반환한다.

 이벤트 처리

  void addActionListener(ActionListener al)  사용자가 콤보 박스에서 항목을 선택했을 경우또는 사용자가 엔터키를 눌렀을 때 발생하는 액션 이벤트를 처리한다.
  void addItemListener(ItemListener il)

   아이템 리스너를 추가한다리스너의 itemStateChanged() 메소드를 호출하여 항목의 선택 상태가 변경되면 호출된다.



아래의 사이트에 들어가게 되면 더 많은 정보를 접할 수 있다.








+ Recent posts