JTable getSelectedRow ne retourne pas à la ligne sélectionnée index
J'essaie d'obtenir les données dans la ligne qui est sélectionnée mais getSelectedRow()
ne fonctionne pas. En fait, j'ai utilisé cette méthode dans l'autre classe, mais ça fonctionne là-bas. Lorsque j'essaie d'imprimer l'index de ligne; l'invite montre -1; ne pas sélectionnée.
J'ai essayé la plupart des solutions qui sont sur internet, mais ils ne résout pas mes solutions.
public Canteen() {
try {
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().setLayout( null );
this.setSize( new Dimension(400, 300) );
this.setTitle( "CANTEEN" );
jScrollPane1.setBounds(new Rectangle(0, 0, 230, 235));
jButton1.setText("REFRESH");
jButton1.setBounds(new Rectangle(0, 235, 100, 20));
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
jButton2.setText("CLOSE");
jButton2.setBounds(new Rectangle(120, 235, 110, 20));
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(jButton1, null);
this.getContentPane().add(jScrollPane1, null);
jTable1 = new JTable (model);
String header [] = {"CUSTOMER", "PRODUCT", "QUANTITY","ORDER NO"};
for (int i = 0; i < 4; i++){
model.addColumn(header[i]);
}
//refresh every 1 minute
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask(){
public void run(){
model.setRowCount(0);
try {
Class.forName(driverName);
conn = DriverManager.getConnection(url,username, password);
statement = conn.createStatement();
ResultSet rs = statement.executeQuery("SELECT USER_NAME, QUANTITY, PRD_NAME, ORDER_NUMBER FROM ORDERS ORDER BY ORDER_NUMBER DESC");
int count = rs.getRow();
String user [] = new String [count];
int i = 0;
while (rs.next()){
String name = rs.getString(1);
String prdName = rs.getString(3);
int number = rs.getInt(2);
int orderNumber = rs.getInt(4);
model.insertRow(i,new Object []{name,prdName,number, orderNumber});
}
conn.close();
}
catch (ClassNotFoundException s) {
System.out.println("Couldn't find the database driver");
System.out.println(s);
}
catch (SQLException s) {
System.out.println("Couldn't connect to the database\n" +s);
}
}
},0, 60000);
}
private void jButton1_actionPerformed(ActionEvent e) {
//set from row 0 for refresh
model.setRowCount(0);
try {
Class.forName(driverName);
conn = DriverManager.getConnection(url,username, password);
statement = conn.createStatement();
ResultSet rs = statement.executeQuery("SELECT USER_NAME, QUANTITY, PRD_NAME FROM ORDERS ORDER BY ORDER_NUMBER DESC");
int count = rs.getRow();
String user [] = new String [count];
int i = 0;
while (rs.next()){
String name = rs.getString(1);
String prdName = rs.getString(3);
int number = rs.getInt(2);
model.insertRow(i,new Object []{name,prdName,number});
}
conn.close();
}
catch (ClassNotFoundException s) {
System.out.println("Couldn't find the database driver");
System.out.println(s);
}
catch (SQLException s) {
System.out.println("Couldn't connect to the database\n" +s);
}
}
private void jButton2_actionPerformed(ActionEvent e) {
System.out.println(jTable1.getSelectedRow());
}
}
Êtes-vous à l'aide d'un éditeur de GUI, comme celui de NetBeans?
J'utilise jDeveloper et oracle SQL developer
J'utilise jDeveloper et oracle SQL developer
OriginalL'auteur newbie | 2012-09-06
Vous devez vous connecter pour publier un commentaire.
Look à votre code
Vous ajoutez
jTable1
à laJScrollPane
au premier abord et seulement ensuite, vous créezjTable1
. C'est la mauvaise voie.jTable1
variable ne débite pas lié maintenant avec la table que vous mettez à la forme. Je pense que c'est la cause de votre problème.Déplacer création de la
jTable1
avant d'ajouter, dans l'JScrollPane
.Pourquoi cette aide avant de déclaration n'a pas de jeter une exception ou une erreur de compilation?
OriginalL'auteur Nestor
Que votre autre exemple montre,
getSelectedRow()
fonctionne, alors vous allez avoir à déboguer votre code. La comparaison avec la sscce ci-dessous peut suggérer la voie à suivre. À la fois leActionListener
et laListSelectionListener
montrer la ligne sélectionnée.En général, le remplissage à partir de SQL ne devrait pas causer ce problème. Essayez de remplacer le
for
boucle dans mon exemple avec votre requête, qui doit incrémenteri
ou de l'utilisationaddRow()
.OriginalL'auteur trashgod