>Java >java지도 시간 >JTable에서 비연속 셀 선택을 활성화하는 방법은 무엇입니까?

JTable에서 비연속 셀 선택을 활성화하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-08 16:41:02987검색

How to Enable Non-Continuous Cell Selection in JTable?

JTable에서 비연속 셀 선택

JTable에서 기본 선택 모드에서는 연속 셀 선택만 허용됩니다. 개별적이고 비연속적인 셀 선택을 활성화하려면 다음 접근 방식을 고려할 수 있습니다.

1. CTRL MOUSE_CLICK:

setSelectionMode(ListSelectionModel.SINGLE_SELECTION)가 설정되지 않은 경우 CTRL 키를 누른 채 셀을 클릭하면 여러 개의 비연속 셀 선택이 가능합니다.

2. 수정된 ListSelectionModel:

ListSelectionModel은 JTable과 JList에서 공유되므로 다음과 같은 수정된 ListSelectionModel을 사용할 수 있습니다.

import java.awt.Component;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;

import javax.swing.*;

public class NonContSelectionModel extends DefaultListSelectionModel {

    @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);
    }
}

이 모델은 setSelectionModel( 새로운 NonContSelectionModel()).

데모:

다음 코드 조각은 수정된 ListSelectionModel을 사용하여 비연속 셀 선택을 허용하는 JTable을 생성합니다.

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;

public class NonContJTableSelection {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                JPanel panel = new JPanel();
                String[] columnNames = {"Name", "Age", "Profession"};
                Object[][] data = {
                        {"John Doe", 30, "Software Engineer"},
                        {"Jane Doe", 28, "Doctor"},
                        {"Peter Jones", 45, "Lawyer"}
                };
                JTable table = new JTable(data, columnNames);
                table.setSelectionModel(new NonContSelectionModel());
                JScrollPane scrollPane = new JScrollPane(table);
                panel.add(scrollPane);

                frame.add(panel);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}

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

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