Выбор строки JTable - PullRequest
       1

Выбор строки JTable

4 голосов
/ 18 февраля 2011

Мне нужно выбрать строку, когда я нажимаю на строку в JTable. Поведение по умолчанию - при нажатии мыши строка выбирается. Как я могу изменить это поведение? Я ожидаю, что ::

мышь нажата -> мышь отпущена ==> выбрана

мышь нажата -> мышь перетащена -> мышь отпущена ==> не выбрана

щелчок мышью ==> выбранная строка

Я хочу сделать что-то еще, когда мышь перетаскивают, но не хочу изменять предыдущий выбор строки для этого действия.

Ответы [ 3 ]

6 голосов
/ 18 февраля 2011
import java.awt.event.*;
import javax.swing.*;

/**
 *
 * @author Jigar
 */
public class JTableDemo  extends MouseAdapter   {
int selection;


    public static void main(String[] args) throws Exception
    {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        String[] headers = {"A", "B", "C"};
        Object[][] data = {{1, 2, 3}, {4, 5, 6}};
        JTable table = new JTable(data, headers);
        JScrollPane scroll = new JScrollPane();
        scroll.setViewportView(table);
        frame.add(scroll);
        frame.pack();
        frame.setVisible(true);
        table.addMouseListener(new JTableDemo());
        scroll.addMouseListener(new JTableDemo());
    }

    @Override
    public void mousePressed(MouseEvent e)
    {
        JTable jtable = (JTable) e.getSource();
        selection= jtable.getSelectedRow();
        jtable.clearSelection();
    }
    @Override
    public void mouseReleased(MouseEvent e){
        JTable jtable = (JTable) e.getSource();
        //now you need to select the row here check below link
    }



}
2 голосов
/ 15 октября 2011

Я не нашел это так просто. Таблица, в которой я пытаюсь выделить строки, не является активным в данный момент компонентом, поэтому вам нужно что-то вроде:

// get the selection model
ListSelectionModel tableSelectionModel = table.getSelectionModel();

// set a selection interval (in this case the first row)
tableSelectionModel.setSelectionInterval(0, 0);

// update the selection model
table.setSelectionModel(tableSelectionModel);

// repaint the table
table.repaint();
0 голосов
/ 20 марта 2013

Это "stange" но у меня сработало:

table.setDragEnabled(true); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...