프로그래밍 언어/JAVA

툴팁

· 코딩마이데이

툴팁 생성 및 달기

스윙 컴포넌트에 마우스를 올리면 잠깐 나타났다가 사라지는 문자열을 툴팁(tooltip)이라고 부릅니다.

툴팁 예

모든 스윙 컴포넌트들이 툴팁울 가질 수 있으며 생성 방법 또한 단순합니다. 간단히 JComponent의 setToolTipText(String msg) 메서드를 호출하면, 문자열(msg)을 컴포넌트의 툴팁으로 등록합니다.

JButton b = new JButton("New");
b.setToolTipText("파일을 생성합니다."); // 버튼에 툴팁 등록

 

툴팁 달기

import javax.swing.*;
import java.awt.*;

public class ToolTipEx extends JFrame {
    private Container contentPane;

    public ToolTipEx() {
        setTitle("툴팁 예제");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        contentPane = getContentPane();
        createToolBar();
        setSize(400, 150);
        setVisible(true);
    }

    // 툴바를 생성하여 컨텐트팬의 NORTH에 부착한다.
    private void createToolBar() {
        JToolBar bar = new JToolBar("Kitae Menu");
        bar.setBackground(Color.LIGHT_GRAY);

        JButton newBtn = new JButton("New");
        newBtn.setToolTipText("파일을 생성합니다."); // New 버튼에 툴팁 달기
        bar.add(newBtn);

        JButton openBtn = new JButton(new ImageIcon("images/open.jpg"));
        openBtn.setToolTipText("파일을 엽니다."); // 열기 버튼에 툴팁 달기
        bar.add(openBtn);
        bar.addSeparator();

        JButton saveBtn = new JButton(new ImageIcon("images/save.jpg"));
        saveBtn.setToolTipText("파일을 저장합니다."); // 저장 버튼에 툴팁 달기
        bar.add(saveBtn);
        bar.add(new JLabel("search"));

        JTextField tf = new JTextField("text field");
        tf.setToolTipText("찾고자하는 문자열을 입력하세요"); // 텍스트 필드에 툴팁 달기
        bar.add(tf);
        contentPane.add(bar, BorderLayout.NORTH);
    }

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

 

ToolTipManager와 툴팁 시간 제어

툴팁은 마우스를 올리면 나타났다가 일정 시간 후에 사라집니다. ToolTipManager 클래스를 이용하여 툴팁과 관련된 시간을 제어할 수 있습니다. 툴팁에 관란 시간 제어는 모든 툴팁에 일괄적으로 적용되며 각 툴팁마다 관련 시간을 따로 지정할 수 없습니다.

 

ToolTipManager 객체 얻기

툴팁 시간을 지정하려면, 우선 다음과 같이 ToolTipManager 객체를 얻어야 합니다.

ToolTipManager m = ToolTipManager.sharedInstance(); // ToolTipManager 객체 리턴

 

툴팁 활성화

ToolTipManager의 setEnabled(boolean b) 메서드를 이용하면, 툴팁이 나타나도록 할지 제어할 수 있습니다. 이러한 툴팁의 활성화/비활성화는 응용프로그램에 속한 모든 튤팁에 일괄적으로 적용되며 컴포넌트별로 제어할 수 없습니다.

m.setEnabled(false); // 툴팁이 나타나지 않도록 설정

 

위의 문장에서 인자를 true를 주면 모든 툴팁이 활성화됩니다.

 

초기 툴팁 출력 시간 제어

ToolTipManager의 setInitialDelay(int millis) 메서드를 호출하면, 마우스가 컴포넌트 위에 올라간 후, 툴팁이 출력되는 데까지 걸리는 시간을 정할 수 있습니다. 인자는 밀리초 단위의 시간입니다. 이 시간 역시 컴포넌트에 일괄적으로 적용됩니다.

m.setInitialDelay(1000); // 마우스가 올라온지 1000ms 후 툴팁이 출력되도록 설정

 

툴팁 지속 시간 제어

ToolTipManager의 setDismissDelay(int millis) 메서드를 호출하면, 출력된 툴팁이 지속되는 시간을 정할 수 있습니다. 인자는 밀리초 단위의 시간입니다.

m.setDismissDelay(1000); // 툴팁이 출력되어 있는 지속 시간을 1000ms로 설정

 

툴팁 시간 제어

import javax.swing.*;
import java.awt.*;

public class ToolTipDelayEx extends JFrame {
    public ToolTipDelayEx() {
        setTitle("툴팁 지연 시간 제어 예제");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container c = getContentPane();
        c.setLayout(new FlowLayout());

        // 체리 이미지 레이블 생성
        JLabel cherryLabel = new JLabel(new ImageIcon("images/cherry.jpg"));
        cherryLabel.setToolTipText("체리 이미지 어때요"); // 툴팁 달기

        // 사과 이미지 레이블 생성
        JLabel appleLabel = new JLabel(new ImageIcon("images/apple.jpg"));
        appleLabel.setToolTipText("사과 이미지 어때요"); // 툴팁 달기

        c.add(cherryLabel);
        c.add(appleLabel);

        // ToolTipManager 객체를 받기
        ToolTipManager m = ToolTipManager.sharedInstance();
        m.setInitialDelay(0); // 초기 툴팁 출력 지연 시간을 0초로 설정
        m.setDismissDelay(10000); // 툴팁 지속 시간을 10초로 설정

        setSize(400, 220);
        setVisible(true);
    }

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

[실행 결과]

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

모달 다이얼로그와 모달리스 다이얼로그  (0) 2025.09.06
다이얼로그 만들기  (0) 2025.09.03
툴바  (1) 2025.08.31
메뉴 만들기  (2) 2025.08.28
wait(), notify(), notifyAll()을 이용한 스레드 동기화  (4) 2025.08.25