Java 프로그램 개발 및 학습 구성 요소 및 이벤트 처리

(학습 참고서 : Java2 실습 튜토리얼 제 5 판)

하나, GUI 프로그래밍

컨테이너 클래스 (Container) 및 컴포넌트 클래스 (Component). javax.swing 패키지의 JComponent 클래스는 java.awt 패키지에있는 Container 클래스의 직접 하위 클래스이며 java.awt 패키지에있는 Component 클래스의 간접 하위 클래스입니다. GUI 프로그래밍의 기본 지식 포인트 :

  • Java는 Component 클래스의 서브 클래스 또는 간접 서브 클래스에 의해 생성 된 객체를 컴포넌트로 호출합니다.
  • Java는 컨테이너의 하위 클래스 또는 간접 하위 클래스에 의해 생성 된 객체를 컨테이너라고 호출합니다.
  • 컨테이너에 구성 요소를 추가 할 수 있습니다. Container 클래스는 공용 메서드 add ()를 제공하며, 컨테이너는이 메서드를 호출하여 컨테이너에 구성 요소를 추가 할 수 있습니다.
  • 컨테이너는 removeAll () 메서드를 호출하여 컨테이너의 모든 구성 요소를 제거하고 remove (Component c) 메서드를 호출하여 매개 변수 c에 지정된 구성 요소를 제거합니다.
  • 컨테이너 자체도 구성 요소이므로 다른 컨테이너에 컨테이너를 추가하여 컨테이너 중첩을 달성 할 수 있습니다.
  • 컨테이너에서 새 구성 요소가 추가되거나 제거 될 때마다 컨테이너에서 validate () 메서드를 호출하여 컨테이너의 구성 요소가 올바르게 표시 될 수 있도록해야합니다.

둘째, 창

GUI 기반 애플리케이션은 운영 체제와 직접 상호 작용할 수있는 컨테이너를 제공 할 수 있습니다. 컨테이너는 운영 체제가 제어하는 ​​플랫폼 (디스플레이)에 직접 표시하고 그릴 수 있습니다. 이러한 컨테이너를 GUI 디자인에서 하단 컨테이너라고합니다. Java에서 제공하는 JFrame 클래스에 의해 생성 된 객체는 일반적으로 창이라고하는 저수준 컨테이너입니다. (JDialog 클래스에 의해 생성 된 객체는 일반적으로 대화 상자라고하는 저수준 컨테이너이기도합니다.) 윈도우가 필요할 때 JFrame 또는 그 하위 클래스를 사용하여 객체를 생성 할 수 있습니다.
(1) 일반적으로 사용되는 JFrame 방법 :

	JFrame()创建一个无标题的窗口
	
	JFrame(String s)创建标题为s的窗口
	
	public void setBounds(int a,int b,int width,int height)设置窗口的初始位置为(a,b),即距屏幕左边a个像素,距屏幕上方b个像素,窗口的宽是width,高是height
	
	public void setSize(int width,int height)设置窗口的大小宽是width,高是height
	
	public void setLocation(int x,int y)设置窗口的位置,默认位置是(00public void setVisible(boolean b)设置窗口是否可见,窗口默认不可见
	
	public void setResizable(boolean b)设置窗口是否可调整大小,默认可调整大小
	
	public void dispose()撤销当前窗口,并释放当前窗口所使用的资源
	
	public void setExtendedState(int state)设置窗口的扩展状态,其中参数state取JFrame类中的·	下列类常量:
	MAXIMIZED_HORIZ 水平方向最大化
	MAXIMIZED_VERT 垂直方法最大化
	MAXIMIZED_BOTH 水平垂直方向都最大化
	
	public void setDefaultCloseOperation(int operation)设置单击窗体右上角关闭图标后,程序会做出怎样的处理。其中参数operation取JFrame类中int static常量:
	DO_NOTHING_ON_CLOSE 什么也不做
	HIDE_ON_CLOSE 隐藏当前窗口
	DISPOSE_ON_CLOSE 隐藏当前窗口,并释放窗体占有的其他资源
	EXIT_ON_CLOSE 结束窗口所在的应用程序

(2) 메뉴 바, 메뉴 및 메뉴 항목
이 세 가지 구성 요소는 일반적으로 창에서 사용되며 메뉴는 메뉴 모음에 배치되고 메뉴 항목은 메뉴에 배치됩니다 .

  1. 메뉴 바 : JComponent 클래스의 서브 클래스 인 JMenubar는 메뉴 바를 생성하는 역할을합니다. 즉, JMenubar가 생성 한 객체는 메뉴 바입니다. JFrame은 메뉴에 메뉴 바를 배치하는 방법을 가지고 있습니다 :
    setJMenuBar (JMenuBar bar)이 방법은 메뉴 바를 창 상단에 추가하고, 오직 하나의 메뉴 바 만 창에 추가 할 수 있습니다.
  2. 메뉴 : JComponent의 하위 클래스 인 JMenu는 메뉴 생성을 담당합니다. 즉, JMenu에서 생성 한 객체가 메뉴입니다.
  3. 메뉴 항목 : JComponent 클래스의 하위 클래스 인 JMenuItem은 메뉴 항목 생성을 담당합니다. 즉, JMenuItem에 의해 생성 된 객체가 메뉴 항목입니다.
  4. Embedded submenu : JMenu는 JMeunItem의 하위 클래스이므로 메뉴 자체도 메뉴 항목이며 메뉴 항목으로 메뉴를 추가하면 추가 된 메뉴를 하위 메뉴라고합니다.
  5. 메뉴의 아이콘 : 메뉴 항목이 아이콘을 갖도록하려면 아이콘 클래스 Icon을 사용하여 아이콘을 선언 한 다음 하위 클래스 ImageIcon 클래스를 사용하여 아이콘을 만들 수 있습니다. 그런 다음 메뉴 항목은 setIcon (Icon
    icon) 메서드를 호출 하여 아이콘을 매개 변수 아이콘으로 설정합니다.

세 가지, 공통 구성 요소 및 레이아웃

(1) 공통 구성 요소 : JComponent의 모든 하위 클래스

JTextField 文本框,允许用户在文本框输入单行文本

JTextArea 文本区,允许用户在文本区输入多行文本

JButton 按钮,允许用户单击按钮

JLabel 标签,标签为用户提供提示信息

JCheckBox 复选框,为用户提供多项选择,并提供两种状态,一种是选中,一种是未选中,用户通过单击该组件切换状态

JRadioButton 单选按钮,为用户提供单项选择

JComboBox 下拉列表,为用户提供可单项选择的列表

JPasswordField 密码框,允许用户在框内输入单行密码,密码的默认回显字符是*。可以使用setEchoChar(char c)重新设置回显字符,调用char[] getPassword()方法返回用户在密码框中输入的密码。

(2) 공통 컨테이너 : JComponent는 특히 컴포넌트를 추가하는 데 자주 사용되는 일부 컨테이너를 제공하며 JFrame 하단 컨테이너와 비교하여 이러한 컨테이너를 종종 중간 컨테이너라고합니다. 작동하려면 중간 용기를 하단 용기에 추가해야합니다.

JPanel 面板,创建有个面板后,再向其中添加组件,然后把这个面板添加到其他容器中。JPanel面板的默认布局是FlowLayout布局

JTabbedPane 选项卡窗口,当用户向其中添加一个组件时,选项卡窗口自动为该组件指定一个对应的选项卡,即让一个选项卡对应一个组件。各个选项卡对应 的组件层叠式放入该容器中,当用户单击选项卡时,容器会显示选项卡对应的组件。选项卡默认在该容器的顶部,从左向右依次排列。使用add(String text,Component c);方法将组件c添加到选项卡容器中去,并且对应文本提示是text。

JScrollPane 滚动窗格,只可以添加一个组件,可以把组件放到一个滚动窗格中,然后通过滚动条来观看该组件比如JTextArea不自带滚动条,因此把文本区放到滚动窗口中:JScrollPane scroll = new JScrollPane(JTextArea);

JSplitPane 拆分窗格,是被分成两部分的容器。具有水平拆分和垂直拆分。水平拆分窗口就是左右各一组件,中间用可以水平移动的拆分线隔。垂直拆分同理。
两个常用构造方法:
JSplitPane(int a,Component b,Component c);参数a取该类的静态常量HORIZONTAL_SPLIT或VERTICAL_SPLIT,决定是水平还是垂直
JSplitPane(int a,boolean b,Component c,Component d);参数a同上决定方向,参数b决定当拆分线移动时,组件是否连续变化(true是连续)

JLayeredPane 分层窗格,如果添加到容器的组件经常需要处理重叠问题,就可以考虑将组件添加到分层窗格中。分层窗格分为5层,使用add(Jcomponentcom,int layer)添加组件com,并指定com所在的层。layer的取值是该类中的类常量:DEFAULT_LAYER(最底层),PALETTE_LAYER, MODAL_LAYER,POPUP_LAYER,DRAG_LAYER(最上层)。
如果分层窗口添加了多个组件,当用户用鼠标移动一组件时,可以把该组件放到最上层。添加到同一层的组件,如果发生重叠,后添加的会遮挡先添加的组件。分层窗格调用public void setLayer(Component c,int layer)可以重新设置组件c所在的层,调用public int getLayer(Component c)可以获取c所在的层数。

(3) 공통 레이아웃 : 레이아웃은 컨테이너에서 컴포넌트의 위치를 ​​제어 할 수 있습니다. 레이아웃 설정 방법 :setLayout(布局对象);

FlowLayout 常用构造方法FlowLayout();可以创建一个居中对齐的布局对象使用add方法将组件顺序添加到容器中,组件按照先后顺序从左到右排列,一行排满后就转到下一行继续从左到右排列。组件的大小默认为最佳大小,如需调整需调用public void setPreferredSize(new Dimension(int x,int y))。调用setAlignment(int align)方法可以重新设置布局的对齐方式,其中参数align取值FlowLayout.LEFT、FlowLayout.CENTER、FlowLayout.RUGHT。

BorderLayout 使用这种布局的容器将空间简单分为东西南北中5个区域,每一个添加的组件应该指明添加到哪个区域中。区域由静态常量表示:CENTER、NORTH、SOUTH、WEST、EAST例:将组件b添加到使用该布局的容器con中:con.add(b,BorderLayout.CENTER);

CardLayout  使用该布局的容器可以容纳多个组件,这些组件被层叠放入容器中,最先加入的容器是第一张(最上面),依次向下排列。该布局的特点是:同一时刻容器只能从这些组件中选一个出来显示。假设有一个容器con,使用步骤如下:
(1)创建CardLayout对象作为布局:CardLayout card = new CardLayout();
(2)为容器设置布局:con.setLayout(card)
(3)容器调用add(String s,Component b)将组件b加入容器,给出代号s(不是组件的名字)
(4)用代号显示组件:card.show(con,s);也可按顺序显示

GridLayout  使用较多的布局编辑器,把容器划分为若干行乘若干行的网格区域。组件位于每一个小格中,调用方法add(Component c)将组件c加入容器

null 空布局可以准确定位组件在容器内的大小和位置。setBounds(int a,int b,int width,int height)方法是所有组件都拥有的一个方法。使用方法:
(1)设置容器p为空布局:p.setLayout(null)
(2)添加组件:p.add(Component c)
(3)设置大小和位置:c.setBounds(int a,int b,int width,int height)

BoxLayout 盒式容器,可以利用容器的嵌套,将某个容器嵌入几个盒式容器,达到布局目的。使用静态方法createHorizontaBox()获得一个行型盒式容器,createVerticalBox获得一个列型盒式容器。使用水平支撑和垂直支撑控制布局容器和组件之间的距离。createHorizontalStrut(int width)得到一个不可见的水平支撑,宽度为width;createVerticalStrut(int height)得到一个不可见的垂直支撑,高度为height。

네, 이벤트 처리

프로그램은 이벤트 처리라는 특정 작업을 달성하기 위해 인터페이스에서 사용자의 작업에 응답합니다.
(1) 이벤트 처리 모드
이벤트 소스 : 이벤트 를 생성 할 수있는 개체를 텍스트 상자, 버튼, 드롭 다운 목록 등 이벤트 소스라고 할 수 있습니다. 이벤트 소스는 객체 여야하며이 객체는 Java가 발생할 수 있다고 생각하는 객체 여야합니다.
모니터 : 발생한 이벤트를 처리하기 위해 이벤트 소스를 모니터링하기위한 객체가 필요합니다. 이벤트 소스는 해당 메서드를 호출하여 개체를 자체 모니터로 등록합니다. 사용자의 해당 조작으로 해당 이벤트가 발생하고 모니터에 해당 처리를 알립니다.
이벤트 처리를위한 인터페이스 : 모니터는 객체이며 이벤트 소스에서 이벤트를 처리하기 위해 모니터는 자동으로 메소드를 호출합니다. Java는 다음과 같이 규정합니다. 모니터가 이벤트 소스의 이벤트를 처리 할 수 ​​있도록 모니터를 생성 한 클래스는 해당 인터페이스를 구현해야하며 모니터는 이벤트 발생시 클래스가 재정의 한 인터페이스 메서드를 호출합니다.

(2) ActionEvent 이벤트
ActionEvent 이벤트 소스 : 텍스트 상자, 버튼, 메뉴 항목, 암호 상자 및 라디오 버튼은 모두 ActionEvent 이벤트를 트리거 할 수 있습니다. 즉, 모두 ActionEvent 이벤트의 이벤트 소스가 될 수 있습니다.
모니터 등록 : Java는 ActionEvent 이벤트를 트리거 할 수있는 구성 요소가 addAction Listener (ActionListener 수신) 메서드를 사용하여 ActionListener 인터페이스를 구현하는 클래스의 인스턴스를 이벤트 소스의 모니터로 등록하도록 규정합니다.
ActionListener 인터페이스 : 이벤트 소스가 ActionEvent 이벤트를 트리거 한 후 모니터는 이벤트를 처리하기 위해 수행 된 조치 (ActionEvent e)를 호출합니다.
ActionEvent 클래스의 메서드 : 두 가지 일반적인 메서드가 있습니다.

1public Object getSource() 该方法被ActionEvent事件对象调用后可以获取ActionEvent事件的事件源对象的引用,即getSource()方法可以将事件源上转型为Object对象,并返回这个上转型对象的引用。
(2public String getActionCommand() ActionEvent对象调用该方法可以获取发生ActionEvent事件时,和该事件相关的一个命令。

(3) ItemEvent 이벤트
ItemEvent 이벤트 소스 : 선택 상자, 드롭 다운 목록은 ItemEvent 이벤트를 트리거 할 수 있습니다. 선택 상자의 선택 상태를 변경하고 드롭 다운 목록에서 각 항목의 선택을 확인하면 이벤트가 트리거 될 수 있습니다.
모니터 등록 : 이벤트를 트리거 할 수있는 컴포넌트는 addItemListener (ItemListener listen)를 사용하여 ItemListener 인터페이스를 구현하는 클래스의 인스턴스를 이벤트 소스의 모니터로 등록합니다.
ItemLisenter 인터페이스 : 이벤트 소스가 이벤트를 트리거 한 후 모니터는이 인터페이스에서 유일한 메서드 public void itemStateChanged (ItemEvent e)를 호출하여 이벤트를 처리합니다.

(4) DocumentEvent 이벤트
문서 이벤트 소스 : 텍스트 영역에는 문서가 유지하는 문서라고하는 문서 인터페이스를 구현하는 인스턴스가 있습니다. 문서는 DocumentEvent 이벤트를 트리거 할 수 있으며 텍스트 영역은 get Document 메서드를 호출하여 유지 관리 된 문서를 반환합니다.
모니터 등록 : 이벤트를 트리거 할 수있는 이벤트 소스는 addDocumentListener (DocumentLis 테너 수신)를 사용하여 DocumentListener 인터페이스를 구현하는 클래스의 인스턴스를 이벤트 소스의 모니터로 등록합니다.
DocumentListener 인터페이스 :이 인터페이스에는 세 가지 메소드가 있습니다.

public void changedUpdate(DocumentEvent e) //变化更新
public void removeUpdate(DocumentEvent e) //删除更新
public void insertUpdate(DocumentEvent e) //输入更新	

이벤트 소스가 파일 이벤트를 트리거 한 후 모니터는 이벤트를 처리하기 위해 인터페이스에서 해당 메서드를 호출합니다.

(5) MouseEvent 이벤트
어떤 컴포넌트라도 마우스 이벤트를 발생시킬 수 있습니다. 따라서 MouseEvent 클래스는 자동으로 이벤트 객체를 생성합니다. 이벤트 소스 모니터 방법은입니다 addMouseListener(MouseListener listener).
MouseListener 인터페이스를 사용하여 마우스 이벤트 처리 :이 인터페이스는 누르기, 놓기, 클릭, 입력 및 종료의 5 가지 트리거 이벤트 소스에서 마우스 작업을 처리 할 수 ​​있습니다.
MouseEvent 클래스의 중요한 메서드 :

getX() 获取鼠标指针在事件源坐标系中的x坐标
getY() 获取鼠标指针在事件源坐标系中的y坐标
getModifiers() 获取鼠标的左键或右键。分别用InputEvent类中的常量BUTTON1_MASK和BUTTON3_MASK表示
getClickCount() 获取鼠标被单击的次数
getSource() 获取发生鼠标事件的事件源
MouseListener的重要方法:
mousePressed(MouseEvent e) 处理在组件上按下鼠标触发的鼠标事件
mouseReleased(MouseEvent e) 处理在组件上释放鼠标键触发的鼠标操作
mouseEntered(MouseEvent e) 处理鼠标进入组件触发的鼠标事件
mouseExited(MouseEvent e) 处理鼠标离开组件触发的鼠标事件
mouseClicked(MouseEvent e) 处理在组件上单击鼠标键触发的鼠标事件

MouseListener의 중요한 방법 :

mousePressed(MouseEvent e) 处理在组件上按下鼠标触发的鼠标事件
mouseReleased(MouseEvent e) 处理在组件上释放鼠标键触发的鼠标操作
mouseEntered(MouseEvent e) 处理鼠标进入组件触发的鼠标事件
mouseExited(MouseEvent e) 处理鼠标离开组件触发的鼠标事件
mouseClicked(MouseEvent e) 处理在组件上单击鼠标键触发的鼠标事件

MouseMotionListener 인터페이스를 사용하여 마우스 이벤트 처리 :이 인터페이스는 이벤트 소스에서 마우스를 끌어서 이동하여 트리거되는 작업을 처리합니다. 일반적으로 사용되는 방법은 다음과 같습니다.

addMouseMotionListener(MouseMotionListener listener) 注册监视器 
mouseDragged(MouseEvent e) 处理拖动鼠标触发的事件
mouseMoved(MouseEvent e) 处理鼠标移动触发的事件

(6) 포커스 이벤트
구성 요소는 포커스 이벤트를 트리거 할 수 있습니다. 구성 요소를 사용하여 addFocusListener(FocusListener listener)포커스 이벤트 모니터 등록 할 수 있습니다 . 구성 요소가 포커스 모니터를 가져온 후 구성 요소의 입력 포커스가 변경되면 FocusEvent 이벤트가 트리거됩니다. 모니터를 생성하는 클래스는 두 가지 메서드가있는 FocusListener 인터페이스를 구현해야합니다.

public void focusGained(FocusEvent e) 组件从无输入焦点变为有输入焦点时,监视器调用该方法
public void focusLost(FocusEvent e) 组件从有输入焦点变为无输入焦点时,监视器调用该方法

사용자가 구성 요소를 클릭하여 포커스를 얻지 만 다른 구성 요소도 포커스를 잃게됩니다 . 컴포넌트는 public boolean requestFocusInWindow()입력 포커스를 얻기 위해 메소드를 호출 할 수 있습니다.

(7) 키보드 이벤트 키보드 이벤트
를 트리거하려면 키보드의 키를 누르거나 놓거나 누르십시오. KeyListener 인터페이스를 사용하여 키보드 이벤트를 처리합니다. addKeyListener (KeyListener e)를 사용하여 모니터를 등록 할 수 있습니다. 인터페이스에는 다음 세 가지 방법이 있습니다.

public void keyPressed(KeyEvent e) 处理按下键盘触发的键盘事件
public void keyTyped(KeyEvent e) 处理敲击(按下又释放)触发的事件
public void keyReleased(KeyEvent e) 处理释放键盘触发的键盘事件

KeyEvent 클래스의 public int getKeyCode () [return key code value] 또는 public char getKeyChar () [return the character on the key] 메서드를 사용하여 어떤 키를 눌렀는지, 두드리고 놓았는지 확인합니다.

(8) Window 이벤트
JFrame은 Window 의 서브 클래스이며 fanshiWindow 서브 클래스가 생성하는 모든 객체는 Window Event 이벤트를 가질 수 있습니다.
WindowListener 인터페이스 : 윈도우가 열리고 닫히고 아이콘 화되면 ... 윈도우 이벤트가 트리거됩니다. 즉, WindowEvent는 윈도우 이벤트 객체를 생성합니다. getWindow () 메서드를 호출하여 창 이벤트가 발생한 창을 가져옵니다. 윈도우는 addWindowlistener 메소드를 사용하여 모니터를 얻습니다. 모니터를 생성하는 객체의 클래스는 7 가지 메소드가있는 WindowListener 인터페이스를 구현해야합니다.

public void windowActivated(WindowEvent e) 窗口从激活到未激活状态调用该方法。
public void windowDeactivated(WindowEvent e)窗口从激活状态到未激活状态调用该方法。
public void windowClosing(WindowEvent e) 当窗口正在关闭时,调用该方法。
public void windowClosed(WindowEvent e) 当窗口关闭后,调用该方法。
public void windowIconified(WindowEvent e) 当窗口图标化后,调用该方法。
public void windowDeiconified(WindowEvent e) 当窗口撤销图标化后,调用该方法。
public void windowOpened(WindowEvent e) 当窗口打开时,调用该方法。
在调用图标化时,会同时调用撤销激活方法;在撤销图标化时,会同时调用激活方法。关闭窗口时,监视器首先调用正在关闭方法再调用关闭后方法。

WindowAdapter 어댑터 : Java가 이벤트 처리를 위해 둘 이상의 메소드를 제공 할 때 Java는 그에 따라 어댑터 클래스를 제공합니다. 어댑터는 해당 인터페이스를 구현 했으므로 어댑터 클래스의 하위 클래스에서 만든 개체를 모니터로 직접 사용하고 하위 클래스에서 필요한 메서드를 재정의 할 수 있습니다.

(9) 익명의 클래스 인스턴스 또는 윈도우를 모니터로 사용
익명의 클래스 인스턴스를 모니터로 사용 : 내부 클래스의 인스턴스를 모니터로 사용하면 이벤트 발생시 모니터가 멤버를보다 쉽게 ​​조작 할 수 있습니다. 이벤트 소스가있는 외부 임베디드 클래스의 개체 참조를 모니터에 전달할 필요가 없습니다.
모니터로서의 윈도우 : 컴포넌트가 위치한 윈도우를 모니터로 사용하면 모니터는 윈도우의 다른 멤버를 편리하게 조작 할 수 있습니다.

다섯, 대화 상자

JDialog 클래스와 JFrame 클래스는 모두 Window의 하위 클래스이며 둘 다의 인스턴스는 기본 컨테이너입니다. 대화 상자에는 모덜리스와 모달의 두 가지 유형이 있습니다. 모달 대화 상자가 활성화되면 대화 상자가있는 프로그램의 다른 창을 활성화 할 수 없습니다. 모드가 없으면 이러한 제한이 없습니다. (보통 중요한 작업을 수행하기 전에 작업의 중요성을 나타내는 모달 대화 상자가 나타납니다.)
(1) 메시지 대화
상자이 대화 상자는 모달 대화 상자입니다. 중요한 작업을 수행하기 전에 먼저 메시지 대화 상자 프레임. JOptionPane 클래스의 정적 메서드를 사용하여 메시지 대화 상자를 만듭니다. public static void showMessageDialog (Component parentComponent,String message,String title,int messageType)
첫 번째 매개 변수는 대화 상자가 표시 될 때 대화 상자의 위치를 ​​지정하고 두 번째 매개 변수는 대화 상자에 표시되는 정보를 지정하고 세 번째 매개 변수는 제목을 지정하며 네 번째 매개 변수는 대화 상자의 모양을 제공하는 데 사용되는 클래스의 JOptionPane 클래스 상수 값을 사용합니다.INFORMATION_MESSAGE、WARNING_MESSAGE、ERROR_MESSAGE、QUESTION_MESSAGE、PLAIN_MESSAGE

(2) 입력 대화 상자이 대화 상자
는 사용자가 텍스트를 입력하고 확인 및 취소 할 수있는 텍스트 상자를 포함하며 모달 대화 상자입니다. 문자열이 필요합니다. JOptionPane 클래스의 정적 메서드를 사용하여 입력 대화 상자를 만듭니다. public static String showInputDialog(Component parentComponent,Object message,String title,int message)
첫 번째 매개 변수는 입력 대화 상자가 종속 된 구성 요소를 지정하고 네 번째 구성 요소는 모양을 지정하며 상수 값은 위와 동일합니다.

(3) 확인 대화
상자이 대화 상자는 모달 대화 상자입니다 .JOptionPane 클래스의 정적 메서드는 확인 대화 상자를 만듭니다. public static int showConfirmDialog(Component parentComponent,Object message,String title,int optionType)
첫 번째 매개 변수는 대화 상자가 나타나는 위치를 지정하고 네 번째 매개 변수는 클래스 상수를 모양 지정 : YES_NO_OPTION、YES_NO_CANCEL_OPTION、OK_CANCEL_OPTION
이 메서드는 다음 정수 값 중 하나를 반환합니다.JOptionPane.YES_OPTION、JOptionPane.NO_OPTION、JOptionPane.CANCEL_OPTION、JOptionPane.OK_OPTION、JOptionPane.CLOSED_OPTION

(4) 색상 대화 상자
JOptionPane 클래스의 정적 메서드는 색상 대화 상자를 만듭니다. public static Color showDialog(Component component,String title,Color initialColor)
세 번째 매개 변수는 색상 대화 상자에서 반환되는 초기 색상을 지정합니다.

(5) 사용자 정의 대화 상자
.JDialog의 하위 클래스를 생성하여 대화 상자 클래스를 생성합니다.이 클래스의 인스턴스는 대화 상자입니다. 대화 상자는 컨테이너이고 기본 레이아웃은 BorderLayout입니다. 대화 상자에 대한 두 가지 일반적인 구성 방법 :

JDialog() 构造一个无标题的初始不可见的对话框
JDialog(JFrame owner) 构造一个无标题的初始不可见的无模式的对话框,owner是对话框所依赖的窗口。

여섯, 트리 구성 요소 및 테이블 구성 요소

(1) 트리 컴포넌트 : JTree 클래스의 객체를 트리 컴포넌트라고합니다.
DefaultMutableTreeNode 노드 : 트리 컴포넌트를 구성하기 위해서는 미리 노드 객체를 생성해야합니다. MutableTreeNode 인터페이스를 구현하는 클래스에 의해 생성 된 모든 객체는 트리의 노드가 될 수 있습니다. 트리에는 루트 노드가 하나만 있으며 다른 모든 노드는 여기에서 시작됩니다. 다른 노드는 자식 노드가있는 분기 노드와 자식 노드가없는 리프 노드로 구분되며 각 노드에는 고유 한 텍스트 레이블과 이미지 아이콘이 있습니다. Default MutableTreeNode 클래스는 트리에 노드를 생성합니다.이 클래스에 일반적으로 사용되는 생성 방법은 다음과 같습니다.

DefaultMutableTreeNode(Object userObject)
DefaultMutableTreeNode(Object userObject,boolean allowChildren) 

트리의 TreeSelectionEvent 이벤트 : 트리 구성 요소는 TreeSelectionEvent 이벤트를 트리거 할 수 있으며 트리 사용 addTreeSelectionListener(TreeSelectionListener listener)방법은 모니터를 가져 옵니다 . 마우스가 노드를 클릭하면 모니터가 인터페이스의 메소드를 자동으로 호출합니다.

(2) 테이블 구성 요소 :
JTable에 일반적으로 사용되는 세 가지 구성 방법 :

JTable() 创建默认的表格模型
JTable(int a,int b) 创建a行,b列的默认模型表格
JTable(Object data[][],Object columnName[]) 创建默认表格模型,并且显示由data指定的二维数组的值,其列名由columnName指定

추천

출처blog.csdn.net/YCF8746/article/details/113611894