찾다
Javajava지도 시간JTable에서 비연속 셀 선택을 허용하는 방법은 무엇입니까?

How to Allow Non-Continuous Cell Selection in a JTable?

개별적이고 비연속적인 JTable 셀 선택 허용

요구 사항 이해

이 작업은 사용자가 여러 개의 비연속적인 셀을 선택할 수 있도록 하는 것입니다. JTable을 사용하면 연속 셀 그룹을 넘어 더욱 유연한 셀 선택이 가능합니다.

탐색하기 솔루션

1. ListSelectionModel 활용

JTable의 setSelectionModel() 메서드를 사용하면 선택 모델을 사용자 정의할 수 있습니다. ListSelectionModel.SINGLE_SELECTION으로 설정하고 InputEvent.CTRL_MASK를 처리하는 리스너를 추가하면 비연속적인 셀 선택을 구현할 수 있습니다.

2. MouseEvent 처리 사용자 정의

JTable의 processMouseEvent() 메서드를 재정의하면 이벤트 수정자를 수정하여 Ctrl 키를 눌렀음을 나타낼 수 있습니다. 이렇게 하면 테이블이 마치 사용자가 Ctrl 키를 누르고 있는 것처럼 동작하여 여러 셀을 선택할 수 있습니다.

3. 사용자 정의 목록 선택 모델 구현

내장된 선택 모델이 요구 사항을 충족하지 않는 경우 원하는 방식으로 셀 선택을 관리하는 자체 ListSelectionModel 구현을 만들 수 있습니다.

4. 구현 예

다음 코드 조각은 JTable에서 비연속 셀 선택을 허용하기 위한 사용자 정의 processMouseEvent() 접근 방식을 보여주는 SSCCE를 제공합니다.

import java.awt.Component;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import javax.swing.*;

public class TableSelection extends JFrame {

    public TableSelection() {
        JPanel main = new JPanel();

        // Initialize table data
        String[] columnNames = {"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"};
        Object[][] data = {
            {"Kathy", "Smith", "Snowboarding", new Integer(5), new Boolean(false)},
            {"John", "Doe", "Rowing", new Integer(3), new Boolean(true)},
            {"Sue", "Black", "Knitting", new Integer(2), new Boolean(false)},
            {"Jane", "White", "Speed reading", new Integer(20), new Boolean(true)},
            {"Joe", "Brown", "Pool", new Integer(10), new Boolean(false)}
        };

        // Override processMouseEvent to add control modifier
        JTable table = new JTable(data, columnNames) {
            @Override
            protected void processMouseEvent(MouseEvent e) {
                int modifiers = e.getModifiers() | InputEvent.CTRL_MASK;
                MouseEvent myME = new MouseEvent((Component) e.getSource(), e.getID(), e.getWhen(), modifiers, e.getX(),
                        e.getY(), e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), e.isPopupTrigger(), e.getButton());
                super.processMouseEvent(myME);
            }
        };
        JScrollPane pane = new JScrollPane(table);
        main.add(pane);
        this.add(main);
    }

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

이 구현을 통해 다음을 수행할 수 있습니다. Ctrl 키를 누른 채 원하는 셀을 클릭하면 연속되지 않은 셀을 선택할 수 있습니다.

위 내용은 JTable에서 비연속 셀 선택을 허용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구