JTable getSelectedRow nicht zurück, wird die ausgewählte Zeile index
Ich versuche, um Daten in der Zeile, die ausgewählt ist aber getSelectedRow()
funktioniert nicht. Tatsächlich, ich verwendete diese Methode in der anderen Klasse, aber es funktioniert. Wenn ich versuche, drucken Sie die Zeile index, der prompt zeigt -1; als nicht gewählt.
Ich habe versucht, die meisten Lösungen, die auf dem internet, aber Sie nicht lösen, meine Lösung.
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());
}
}
Sind Sie mit einem GUI-editor, wie man in NetBeans?
Ich benutze jDeveloper und oracle SQL-developer
Ich benutze jDeveloper und oracle SQL-developer
InformationsquelleAutor newbie | 2012-09-06
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Suchen, um Ihren code
Fügen Sie
jTable1
zu denJScrollPane
auf den ersten-und nur dann schaffen SiejTable1
. Es ist der falsche Weg.jTable1
variable doen nicht verbunden jetzt mit der Tabelle, die Sie platzieren auf die form. Ich denke, es ist Ursache des Problems.Verschieben Schaffung des
jTable1
vor der Zugabe inJScrollPane
.Warum dieses vor der Verwendung Erklärung nicht eine exception zu werfen oder zu kompilieren Fehler?
InformationsquelleAutor Nestor
Als Ihr anderes Beispiel zeigt,
getSelectedRow()
funktioniert, so dass Sie gehen zu müssen, um den code Debuggen. Vergleich mit der sscce unten schlagen kann Weg. Sowohl dieActionListener
und dieListSelectionListener
zeigt die ausgewählte Zeile.Im Allgemeinen Auffüllen von SQL sollte nicht dieses problem verursachen. Ersetzen Sie das
for
- Schleife in meinem Beispiel mit der Abfrage, die soll-Schrittweitei
oder verwenden SieaddRow()
.InformationsquelleAutor trashgod