从My Sql中检索JCombobox值

时间:2012-01-02 07:33:25

标签: java mysql swing jtable jcombobox

我使用以下代码从mysql学生数据Base中检索数据。它工作正常。它将在组合框中显示学生名称。该值从Db中检索。

我的问题是Jcombobox名称字段中自动显示的第一个值(存储在数据库列中的第一个学生名称),当我单击组合框箭头时显示它。这意味着当我执行以下代码时,我看到了组合框的名称字段中的第一个值(名字)在箭头附近。但是我需要“学生姓名”标题。如果我指定那个设计时间,但是当我点击那个箭头时再次显示相同的名称。如何解决这个问题?

我的另一个问题是当我输入组合框的名称字段时如何获取选择“组合框项目”。这意味着如果我键入S表示选择的组合框项目以S开头。

package designstudent;
import java.awt.*;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.*;
import javax.swing.table.DefaultTableModel;
import java.sql.*;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import javax.swing.*;



public class FrmeA extends javax.swing.JFrame  {

    FrmA1 f1=new FrmA1();
    Statement TmpFlxTSt=null;
    ResultSet TmpFlxTRs=null;
    GContnStr GCS=new GContnStr();

public FrmeA() {
    initComponents();
}

public void combo() {

    try {
        GCS.GContnStr();
        TmpFlxTSt= GCS.GCotnStr.createStatement();
        String select = "Select StudName from studentmaster";
        TmpFlxTRs = TmpFlxTSt.executeQuery(select);

        while (TmpFlxTRs.next()) {
            cbx.addItem(TmpFlxTRs.getString("StudName"));
            Object comboitem=cbx.getSelectedItem();
        }

        TmpFlxTRs.close();
        TmpFlxTSt.close();
    }
    catch(Exception e) {
        System.out.println(e);
    }

}


@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jPanel2 = new javax.swing.JPanel();
    CmdA = new javax.swing.JButton();
    CmdE = new javax.swing.JButton();
    CmdD = new javax.swing.JButton();
    cmdQ = new javax.swing.JButton();
    jPanel3 = new javax.swing.JPanel();
    jScrollPane1 = new javax.swing.JScrollPane();
    FlxT = new javax.swing.JTable();
    cbx = new javax.swing.JComboBox();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    jPanel2.setBorder(
        javax.swing.BorderFactory.createTitledBorder(
            javax.swing.BorderFactory.createMatteBorder(
                1, 1, 1, 1, new java.awt.Color(0, 0, 255
            )
        ), "Commands")
    );

    CmdA.setFont(new java.awt.Font("Arial", 0, 10));
    CmdA.setText("+");
    CmdA.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            CmdAActionPerformed(evt);
        }
    });

    CmdE.setFont(new java.awt.Font("Arial", 0, 10));
    CmdE.setText("E");

    CmdD.setFont(new java.awt.Font("Arial", 0, 10));
    CmdD.setText("-");

    cmdQ.setFont(new java.awt.Font("Arial", 0, 10));
    cmdQ.setText("Q");
    javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
    jPanel2.setLayout(jPanel2Layout);
    jPanel2Layout.setHorizontalGroup(
    jPanel2Layout.createParallelGroup(
        javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(
              CmdA,javax.swing.GroupLayout.PREFERRED_SIZE,64,javax.swing.GroupLayout.PREFERRED_SIZE
                 )
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(CmdE, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(CmdD, javax.swing.GroupLayout.DEFAULT_SIZE, 72, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(cmdQ, javax.swing.GroupLayout.PREFERRED_SIZE, 72, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(35, 35, 35))
        );

        jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {CmdA, CmdE, cmdQ});

        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(CmdA, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(CmdE, javax.swing.GroupLayout.DEFAULT_SIZE, 79, Short.MAX_VALUE)
                    .addComponent(CmdD, javax.swing.GroupLayout.DEFAULT_SIZE, 79, Short.MAX_VALUE)
                    .addComponent(cmdQ, javax.swing.GroupLayout.DEFAULT_SIZE, 79, Short.MAX_VALUE))
                .addContainerGap())
        );

        jPanel3.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1, 1, 1, new java.awt.Color(0, 0, 255)));

        FlxT.setFont(new java.awt.Font("Arial", 0, 10));
        FlxT.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "StudName", "StudClass", "StudMrk1", "StudMrk2", "StudTot", "StudRes", "StudNO", "StudId"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.Integer.class, java.lang.Integer.class, java.lang.Integer.class, java.lang.Integer.class, java.lang.String.class, java.lang.Integer.class, java.lang.Integer.class
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }
        });
        jScrollPane1.setViewportView(FlxT);
        FlxT.getColumnModel().getColumn(0).setResizable(false);
        FlxT.getColumnModel().getColumn(0).setPreferredWidth(150);
        FlxT.getColumnModel().getColumn(1).setResizable(false);
        FlxT.getColumnModel().getColumn(1).setPreferredWidth(70);
        FlxT.getColumnModel().getColumn(2).setResizable(false);
        FlxT.getColumnModel().getColumn(2).setPreferredWidth(70);
        FlxT.getColumnModel().getColumn(3).setResizable(false);
        FlxT.getColumnModel().getColumn(3).setPreferredWidth(70);
        FlxT.getColumnModel().getColumn(4).setResizable(false);
        FlxT.getColumnModel().getColumn(4).setPreferredWidth(70);
        FlxT.getColumnModel().getColumn(5).setResizable(false);
        FlxT.getColumnModel().getColumn(5).setPreferredWidth(70);
        FlxT.getColumnModel().getColumn(6).setMinWidth(0);
        FlxT.getColumnModel().getColumn(6).setPreferredWidth(0);
        FlxT.getColumnModel().getColumn(6).setMaxWidth(0);
        FlxT.getColumnModel().getColumn(7).setMinWidth(0);
        FlxT.getColumnModel().getColumn(7).setPreferredWidth(0);
        FlxT.getColumnModel().getColumn(7).setMaxWidth(0);

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 1015, Short.MAX_VALUE)
            .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel3Layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 995, Short.MAX_VALUE)
                    .addContainerGap()))
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 249, Short.MAX_VALUE)
            .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel3Layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 184, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(54, Short.MAX_VALUE)))
        );

        cbx.setEditable(true);
        cbx.setFont(new java.awt.Font("Arial", 0, 10)); // NOI18N
        cbx.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbxActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap(657, Short.MAX_VALUE)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(122, 122, 122)
                .addComponent(cbx, javax.swing.GroupLayout.PREFERRED_SIZE, 124, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(791, Short.MAX_VALUE))
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addContainerGap()))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(19, 19, 19)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(cbx, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(777, Short.MAX_VALUE))
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(190, 190, 190)
                    .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(503, Short.MAX_VALUE)))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 1047, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 955, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
        );

        pack();
        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        java.awt.Dimension dialogSize = getSize();
        setLocation((screenSize.width-dialogSize.width)/2,(screenSize.height-dialogSize.height)/2);
    }// </editor-fold>

    private void CmdAActionPerformed(java.awt.event.ActionEvent evt) {                                     

        f1.setVisible(true);

 // TODO add your handling code here:
    }                                    

    private void cbxActionPerformed(java.awt.event.ActionEvent evt) {

}

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                 FrmeA fr=new FrmeA();
                 fr.combo();
                 fr.setVisible(true);
                   //fr.initconn();
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton CmdA;
    private javax.swing.JButton CmdD;
    private javax.swing.JButton CmdE;
    private javax.swing.JTable FlxT;
    private javax.swing.JComboBox cbx;
    private javax.swing.JButton cmdQ;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration
}

1 个答案:

答案 0 :(得分:1)

你看看AutoCompete JComboBox / JTextField,注意你必须保存两个Java类,例子here,请不要使用Netbeans生成的代码,因为在大多数情况下过度使用基本方法,使用而是Standard Swing JComponents