Java 这是JComboBox中的意图行为吗?我怎样才能避免这种行为?

Java 这是JComboBox中的意图行为吗?我怎样才能避免这种行为?,java,swing,jcombobox,Java,Swing,Jcombobox,我意识到,如果您在JComboBox中有相同的选择,使用向上/向下箭头键将无法帮助您导航选择。我怎样才能避免这种行为 请参见下面的屏幕截图: 公共类NewJFrame扩展了javax.swing.JFrame{ /**创建新表单NewJFrame*/ 公共NewJFrame(){ 初始化组件(); /*如果这里有3个相同的字符串。使用上/下箭头键, *不会四处移动所选内容。 */ 此.jcombox1.addItem(“英特尔”); 此.jcombox1.addItem(“英特尔”); 此.j

我意识到,如果您在JComboBox中有相同的选择,使用向上/向下箭头键将无法帮助您导航选择。我怎样才能避免这种行为

请参见下面的屏幕截图:

公共类NewJFrame扩展了javax.swing.JFrame{
/**创建新表单NewJFrame*/
公共NewJFrame(){
初始化组件();
/*如果这里有3个相同的字符串。使用上/下箭头键,
*不会四处移动所选内容。
*/
此.jcombox1.addItem(“英特尔”);
此.jcombox1.addItem(“英特尔”);
此.jcombox1.addItem(“英特尔”);
}
/**此方法从构造函数中调用,以
*初始化表单。
*警告:请勿修改此代码。此方法的内容为
*始终由表单编辑器重新生成。
*/
@抑制警告(“未选中”)
//                           
私有组件(){
jcombox1=newjavax.swing.JComboBox();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jcombox1.setEditable(true);
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(105、105、105)
.addComponent(jcombox1,javax.swing.GroupLayout.PREFERRED_SIZE,158,javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(137,简称最大值))
);
layout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(63,63,63)
.addComponent(jcombox1,javax.swing.GroupLayout.PREFERRED\u SIZE,javax.swing.GroupLayout.DEFAULT\u SIZE,javax.swing.GroupLayout.PREFERRED\u SIZE)
.addContainerGap(217,简称最大值))
);
包装();
}//                         
公共静态void main(字符串参数[]){
invokeLater(new Runnable()){
公开募捐{
新建NewJFrame().setVisible(true);
}
});
}
//变量声明-不修改
私有javax.swing.JComboBox jcombox1;
//变量结束声明
}
退出


答案已经在那篇帖子中给出了。

我要说的是,在我的Mac电脑上的JRE 1.6上运行这段代码,上/下键都可以正常工作。我只是在Ubuntu10.04和JRE 1.6中使用了它,你是对的,上/下键都不起作用。如果您更改它们,上/下键会起作用,但如果它们相同,则不会起作用。奇怪。。。我将继续玩它。为了补充我上面的评论:向上/向下做工作,但是如果你选择一个项目并重新打开组合框,选择的内容不会被正确记住。是的,这就是我知道它是交叉发布的原因。我花时间在许多论坛上,试图在发现交叉海报时发出警告,这样我们就不会浪费时间回答已经回答过的问题。下次OP这样做的时候,我只是忽略了这个问题,并警告大家,希望他们也忽略它。如果你在这里复制你的答案,我会更愿意投票给你。:)(是的,这会违反DRY,但是在这里有答案是很好的。我想我倾向于认为太阳更可能……呃,Oracle Java论坛从网络上消失了……。@Jonik,这就是为什么我鄙视交叉海报。所有信息都应该放在一个地方,这样讨论就可以在一个地方进行。因此,解决方案应该只放在一个地方,以防有人想发表其他评论。将代码和注释放在两个不同的地方太难管理了。
public class NewJFrame extends javax.swing.JFrame {

    /** Creates new form NewJFrame */
    public NewJFrame() {
        initComponents();

        /* If you are having 3 same strings here. Using, up/down arrow key,
         * will not move the selection around.
         */
        this.jComboBox1.addItem("Intel");
        this.jComboBox1.addItem("Intel");
        this.jComboBox1.addItem("Intel");
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jComboBox1 = new javax.swing.JComboBox();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jComboBox1.setEditable(true);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(105, 105, 105)
                .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 158, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(137, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(63, 63, 63)
                .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(217, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JComboBox jComboBox1;
    // End of variables declaration                   
}