Bekommen Wert von der JTable zu setzen, in JTextField

Ich versuche, um nutzen aus JTable in JTextField beim klicken mit der Maus, aber es funktioniert nicht. Zum Beispiel, wenn der Benutzer wählt eine Zeile aus meiner Tabelle JTextField füllt sich mit Informationen, die an ausgewählten Zeile dynamisch.

Auch meine JTable ist in einem JScrollPane. Auch mein Tisch hat eine DefaultTableModel.

DefaultTableModel model = new DefaultTableModel(){
    public boolean isCellEditable(int row, int column){
        return false;
        }
    };
private JTable jTable1 = new JTable(model);
public Reservation() {
    try {
        jbInit();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private void jbInit() throws Exception {
    this.getContentPane().setLayout( null );
    this.setSize( new Dimension(400, 300) );
    this.setTitle( "Rezervasyon" );
    jLabel1.setText("Kitap No: ");
    jLabel1.setBounds(new Rectangle(0, 185, 60, 15));
    jTextField1.setBounds(new Rectangle(60, 180, 70, 20));
    jLabel2.setText("Ogrenci No: ");
    jLabel2.setBounds(new Rectangle(165, 180, 65, 20));
    jTextField2.setBounds(new Rectangle(250, 180, 75, 20));
    jButton1.setText("Gonder");
    jButton1.setBounds(new Rectangle(135, 210, 75, 21));
    jButton1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                jButton1_actionPerformed(e);
            }
        });
    jLabel3.setText("Ogrenci ID: ");
    jLabel3.setBounds(new Rectangle(5, 30, 100, 15));
    jTextField3.setBounds(new Rectangle(80, 25, 120, 20));
    jScrollPane1.setBounds(new Rectangle(5, 50, 350, 115));
    jScrollPane1.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                int row = jTable1.getSelectedRow();
                String book = model.getValueAt(row, 0).toString();
                jTextField1.setText(book);
                System.out.println(book);
                String stuID = model.getValueAt(row, 1).toString();
                jTextField2.setText(stuID);
            }
        });
    jButton2.setText("Ara");
    jButton2.setBounds(new Rectangle(285, 25, 75, 21));
    jButton2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                jButton2_actionPerformed(e);
            }
        });
    jScrollPane1.getViewport().add(jTable1, null);
    this.getContentPane().add(jButton2, null);
    this.getContentPane().add(jScrollPane1, null);
    this.getContentPane().add(jTextField3, null);
    this.getContentPane().add(jLabel3, null);
    this.getContentPane().add(jButton1, null);
    this.getContentPane().add(jTextField2, null);
    this.getContentPane().add(jLabel2, null);
    this.getContentPane().add(jTextField1, null);
    this.getContentPane().add(jLabel1, null);
    String header [] ={"Kitap No", "Ogrenci No"};
    for(int i = 0; i < header.length; i++){
        model.addColumn(header[i]);
        }
}
Warum sind Sie hinzufügen einen MouseListener auf die JScrollPane? Sollten Sie nicht indem es auf die JTable? Als Nächstes werden wir diskutieren müssen, Ihr nicht mit layout-Managern, aber das ist eine andere Diskussion.
weil ich dachte, die scrollpane ist gefallen, dass container von jtable
aber du hast Recht, danke 🙂
Aber Sie haben nicht den Wunsch zu hören für Klicks auf die JScrollPane. Sie sind daran interessiert, klickt in die JTable. Und beachten Sie, dass das JScrollPane ist nicht die JTable container, wie es ist gehalten durch den Viewport, aber das ist kein Thema für hier.
Andere Fragen: vermeiden Sie null-layout und die absolute Positionierung der Komponenten, da es extrem schwierig zu pflegen. Und Sie möchten Ihre Variablen-Namen, die Sinn machen und das macht deinen code selbst zu kommentieren. Es ist sehr schwer für uns zu verstehen, was Ihr code macht, wenn Sie verwenden Sie Variablennamen wie jTextField2. Warum nicht addressTextField oder einige andere Namen, der beschreibt, seine Funktion?

InformationsquelleAutor newbie | 2012-12-06

Schreibe einen Kommentar