呵呵,你发了两个帖子,可能向你那么深入要求SWING编程的教少,毕竟SWING不是JAVA的重点。
帮你UP

解决方案 »

  1.   

    但是用户不会这么想啊
    他们只知道他想要什么,他可不会管你的实现是怎么样的
    友好的用户界面是成功软件不可缺少的因素我只是认为java不可能连这样的设定都不行再指正一点,这是我发的第三个帖子问这个问题,谢谢你的up ^_^
      

  2.   

    条件:
    1、不要告诉我加一个监听器,再判断键值什么的
    2、不用先得出当前Cell的行和列的值,然后再用 列值+1 取得下一个Cell再赋给它焦点
    ================================================================================
    让人晕倒的条件~~~
    关注!
      

  3.   

    如果按你的条件做,我想我是做不出来。我以前用BCB的时候,在设计界面的时候也可以有Enter控件焦点,但那里是监视了键盘才可以做到的。
    你这样的要求我觉得太难了,或者你看一下Excel中回车后它的焦点控制是怎么做的。
      

  4.   

    我看JTable的代码这么写的:public JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm) {
            super();
            setLayout(null); setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
       JComponent.getManagingFocusForwardTraversalKeys());
    setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
       JComponent.getManagingFocusBackwardTraversalKeys());        if (cm == null) {
                cm = createDefaultColumnModel();
                autoCreateColumnsFromModel = true;
            }
            setColumnModel(cm);        if (sm == null) {
                sm = createDefaultSelectionModel();
            }
    setSelectionModel(sm);    // Set the model last, that way if the autoCreatColumnsFromModel has
        // been set above, we will automatically populate an empty columnModel
        // with suitable columns for the new model.
            if (dm == null) {
                dm = createDefaultDataModel();
            }
    setModel(dm);        initializeLocalVars();
            updateUI();
        }其中的setFocusTraversalKeys(...)就是设定Tab键,我就想,为什么它可以设置,我们就不行呢?而且它的Tab键控制得很好,不能获得焦点的Cell就会跳过,如果是我们自己写,还要一堆判断,不麻烦吗?所以我提出来,如果能按最简单的做,何乐而不为呢?大家用起来也会觉得很爽啊。不过我仿照它的这种写法,效果出不来,焦点老是跳不出去,晕死!!
      

  5.   

    JTable在JDK里面是这样写的:
    public class JTable extends JComponent implements TableModelListener, Scrollable,
        TableColumnModelListener, ListSelectionListener, CellEditorListener,
        Accessible
    {
    ……
    }我觉得楼主是否可以自己也从JComponent继承一个类,也实现JTable的这些接口。然后再这个基础上实现自己需要的东西?
    相当于自己写了一个JTable类。我以前做过类似的项目。好象当初我的那帮同事就是这个做的。在第一个框里输入字符,然后回车就自动跳到下一个框。我想也应该和楼主提出的要求类似。仅提出一个想法。请大家给个意见。谢谢!
      

  6.   

    这......为什么就不能调用函数直接设置呢?
    难道和CellEditor有关?
      

  7.   

    太谢谢nwp123(风中浮云)了:
    在nwp123(风中浮云)代码的基础上,我加上了Shift+Enter键后退的功能
    再次感谢!!import javax.swing.*;
    import java.awt.*;
    import java.awt.event.KeyEvent;
    /**
     * @author Administrator
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public class EditTable extends JFrame {
        
        String[] colName = {"Col_0","Col_1", "Col_2"};
        String[][] data ={
                {"a1", "a2", "a3"},
                {"b1", "b2", "b3"},
                {"c1", "c2", "c3"}
        };
        
        JTable table = new JTable(data, colName);
        
        public EditTable()
        {
    super("test");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
            JScrollPane scrollPanel = new JScrollPane(table);
            JPanel panel = new JPanel();
            panel.setLayout(new BorderLayout());
            panel.add(scrollPanel, BorderLayout.CENTER);
            this.getContentPane().add(panel);
            
            setTable();
        }
        
        /**
         * 设置表格回车键功能
         * @author Administrator
         *
         * TODO 要更改此生成的类型注释的模板,请转至
         * 窗口 - 首选项 - Java - 代码样式 - 代码模板
         */
        private void setTable()
        {
            InputMap inputMap = table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
            KeyStroke tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
            KeyStroke entry = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0); KeyStroke sTab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB,1);
    KeyStroke sEntry = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,1);
            
            Object tabOperObject = inputMap.get(tab);  
            inputMap.remove(entry);
            inputMap.put(entry, tabOperObject); Object sTabOperObject = inputMap.get(sTab);
    inputMap.remove(sEntry);
    inputMap.put(sEntry,sTabOperObject);
            
        }
        
        public static void main(String[] args)
        {
            EditTable frame = new EditTable();
            frame.pack();
            frame.setVisible(true);
        }}再次感谢!!!
      

  8.   

    nwp123(风中浮云)兄请进:
    http://community.csdn.net/Expert/topic/3721/3721069.xml?temp=.5750849