Temat: java, tableview pobieranie danych do TextField

Witam
stworzyłem tableview dodalem do niej rekordy z bazy i teraz chciałbym po wybraniu jakiegoś rekordu żeby przypisało do texfieldów jego wartośc, np. mam tabelę magazyn i chiałbym żeby z tego tableview pobrało do dwóch textfieldów wartości: do jednego nazwa , a do drugiego cena.
mógłbym mi ktoś w tym pomóc ?
z góry dziękuję :)

@FXML
public void plus1(ActionEvent event) throws SQLException, ClassNotFoundException {
if (tableview.isVisible() == true) {
tableview.setVisible(false);
} else {
tableview.setVisible(true);

String url = "jdbc:sqlite:bazadanychfaktura.db3";
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection(url);
data = FXCollections.observableArrayList();
String SQL = "SELECT * from Magazyn;";
//ResultSet
ResultSet rs = c.createStatement().executeQuery(SQL);
for (int i = 0; i < rs.getMetaData().getColumnCount(); i++) {
final int j = i;
TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i + 1));
col.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
return new SimpleStringProperty(param.getValue().get(j).toString());
}
});

tableview.getColumns().addAll(col);
System.out.println("Column [" + i + "] ");
}
while (rs.next()) {
//Iterate Row
ObservableList<String> row = FXCollections.observableArrayList();
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
//Iterate Column
row.add(rs.getString(i));
}
System.out.println("Row [1] added " + row);
data.add(row);

}

tableview.setItems(data);

}
}
========================================================================
???????????????????????????????????????????????????????????????????????????????????????????????????????
========================================================================
@FXML
public void tableviewaction(ActionEvent event){

tableview.getSelectionModel().getSelectedItem();
if(tableview.getSelectionModel().getSelectedItem() != null)
{
nazwa1.setText("");
cena1setText("");
}
}
Marcin Mackiewicz

Marcin Mackiewicz Programista JAVA, RS
Adware Polska

Temat: java, tableview pobieranie danych do TextField

package app;

import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.DefaultListSelectionModel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

/**
*
* @author Marcin Mackiewicz <mmackiew@wsb.poznan.pl>
*/
public class App {

public static void main(String[] args) {

// Ustawienia okna głównego
JFrame FRAME = new JFrame("Przykład");
FRAME.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FRAME.setPreferredSize(new Dimension(400, 300));
FRAME.setMinimumSize(new Dimension(400, 300));
FRAME.setLayout(new FlowLayout());

// Przykładowe dane
Object[][] dane = new Object[][] {
{ "Pasta", 14.5 },
{ "Paca", 19.99 },
{ "Zapałki", 0.5,}
};

// Nazwy kolumn
Object[] kolumny = new Object[] { "Nazwa", "Cena" };

// Obiekt tabela
final JTable TABLE = new JTable(dane, kolumny); // Final aby można było użyć w evencie
TABLE.setPreferredSize(new Dimension(390, 150));

// Możliwe zaznaczanie tylko jednego wiersza
TABLE.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

// Pole tekstowe z nazwą
final JTextField NAZWA = new JTextField(); // Final aby można było użyć w evencie
NAZWA.setPreferredSize(new Dimension(300, 30));

// Pole tekstowe z ceną
final JTextField CENA = new JTextField(); // Final aby można było użyć w evencie
CENA.setPreferredSize(new Dimension(300, 30));

// Wykonanie akcji jeżeli zaszło zdarzenie zaznaczenia lub zmiany zaznaczenia wiersza
TABLE.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {

// Wykonaj akcję tylko jeżeli event wywołany z DefaultListSelectionModel
if (e.getSource() instanceof DefaultListSelectionModel) {

// Pobierz model
DefaultListSelectionModel model = (DefaultListSelectionModel) e.getSource();

// Pobierz index wiersza z widoku dla użytkownika
int index = model.getMinSelectionIndex();

// Przemapuj index z widoku na index z modelu danych. Jezeli widok będzie filtrowany
// ta musi nastąpić
index = TABLE.convertRowIndexToModel(index);

// Pobierz dane o nazwie. Jeżeli baza zwraca null to wstaw pusty string
Object n = TABLE.getModel().getValueAt(index, 0);
if (n == null) { n = ""; }

// Pobierz dane o cenie. Jeżeli baza zwraca null to wstaw pusty string
Object c = TABLE.getModel().getValueAt(index, 1);
if (c == null) { n = ""; }

// Przypisz nazwę i cenę do odpowiednich pól
NAZWA.setText(n.toString());
CENA.setText(c.toString());

}
}
});

FRAME.add(TABLE);
FRAME.add(new JLabel("Nazwa:"));
FRAME.add(NAZWA);
FRAME.add(new JLabel("Cena:"));
FRAME.add(CENA);

FRAME.setVisible(true);
}

}

Obrazek

Następna dyskusja:

Java a baza danych.




Wyślij zaproszenie do