문제

내가 무엇을 하고 싶은 사용자가 마침 데이터의 편집에서는 테이블 세포 포커스 이동에 또 다른 세포에 따라 사용자 입력하고,차례로는 셀 편집 모드로도 사용자 입력을 시작할 수 있으로 즉시 추가 작업이 없습니다.이 방법은 사용자가 자신의 일에 집중할 수 있습 및 소프트웨어를 할 것입니다'생각'에 대한 세포 편집해야 합니다 다음.

간단한 작업에는 보이지 않는 간단한 실제 생활에서...누구나 어떤 아이디어?

도움이 되었습니까?

해결책

이것을 시도해 보시기 바랍 예입니다.

그것은 탐색할 수 있도록 테이블을 통해 값을 입력하여 u,d,l,r Up,Down,Left,Right.

는 아이디어를 줄 것이는 방법에 대해 그것을 할 수 있습니다.

import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.KeyStroke;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

public class Test extends JFrame {

    private JTable table;
    private TableModel tableModel;

    public Test() {
        tableModel = new DefaultTableModel(5, 5);

        table = new JTable(tableModel);
        table.setColumnSelectionAllowed(true);

        getContentPane().add(table);

        Action handleEnter = new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                table.getCellEditor().stopCellEditing(); // store user input
                int row = table.getSelectedRow();
                int col = table.getSelectedColumn();
                String val = String.valueOf(table.getValueAt(row, col)).toLowerCase();
                if (val.equals("u"))
                    --row;
                else if (val.equals("d"))
                    ++row;
                else if (val.equals("l"))
                    --col;
                else if (val.equals("r"))
                    ++col;
                if (     row >= 0 && row < tableModel.getRowCount()
                      && col >= 0 && col < tableModel.getColumnCount()) {
                    table.changeSelection(row, col, false, false);
                    table.editCellAt(row, col);
                }
            }
        };
        // replace action for ENTER, since next row would be selected automatically
        table.getInputMap().put(KeyStroke.getKeyStroke("ENTER"), "handleEnter");
        table.getActionMap().put("handleEnter", handleEnter);
    }

    public static void main(String[] args) {
        Test test = new Test();
        test.setSize(800, 600);
        test.setVisible(true);
    }
}

다른 팁

추가해야 합니다 KeyListener 을 JTable 을 얻을 모두 입력한다.후에 사용자 프레스 입력, 를 확인해야 합 단어는 사용자가 입력한다.

자신이 쓰 FocusTraversalPolicy 그것을 설정하여 테이블

table.setFocusTraversalPolicy(policy)

FocusTraversalPolicy 에 대해 설명합하는 구성요소가 다음에 초점.이 후에 호출할 수 있는

FocusManager.getCurrentManager().focusNextComponent();

편집:내가 시험하지 않았다,그것은 단지 아이디어이다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top