Hallo Forum!
Ich habe bei meinem Programm folgendes Problem.
Ich habe 4 Spalten, wobei die letzte Spalte ein Drop - Down Menue ist, wo es zur Auswahl ( OK, NOK, ... ) gibt!
Jetzt möchte ich, wenn z. B: die Drop - Down Spalte auf einen neuen Wert geändert wird, dass der User auch dazu verpflichtet ist, die erste Spalte zu ändern ( was dort für ein Wert drinnen steht ist für das Erste einmal egal! ).
Der User soll aber erst benachrichtigt werden, dass die erste Spalte auch zu ändern ist, wenn er versucht die JTable mittels den Button "OK" wieder in die Datenbank zurückzuschreiben!
Jetzt wollte ich gerne wissen, ob das überhaupt möglich ist, so umzusetzen?
Ich lese mir die Daten aus der Datenbank/Tabelle mittels einen Vektor aus:
Hier einmal der Code ( ist nicht schön, es dient im Moment auch nur zur Veranschaulichung! ):
Ich danke Euch schon einmal für Eure Hilfen!
lG
Ich habe bei meinem Programm folgendes Problem.
Ich habe 4 Spalten, wobei die letzte Spalte ein Drop - Down Menue ist, wo es zur Auswahl ( OK, NOK, ... ) gibt!
Jetzt möchte ich, wenn z. B: die Drop - Down Spalte auf einen neuen Wert geändert wird, dass der User auch dazu verpflichtet ist, die erste Spalte zu ändern ( was dort für ein Wert drinnen steht ist für das Erste einmal egal! ).
Der User soll aber erst benachrichtigt werden, dass die erste Spalte auch zu ändern ist, wenn er versucht die JTable mittels den Button "OK" wieder in die Datenbank zurückzuschreiben!
Jetzt wollte ich gerne wissen, ob das überhaupt möglich ist, so umzusetzen?
Ich lese mir die Daten aus der Datenbank/Tabelle mittels einen Vektor aus:
Hier einmal der Code ( ist nicht schön, es dient im Moment auch nur zur Veranschaulichung! ):
Java:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.Border;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableColumn;
import static java.lang.System.out;
import static java.lang.System.exit;
public class CJTableAenderung implements CellEditorListener{
JFrame FirstFrame;
JTable table;
JFrame f1;
TableColumn column;
JComboBox comboBox;
JPanel panel;
JButton back;
JButton ok;
JButton cancel;
Vector<Vector<Object>> data;
Vector<String> columnNames;
public CJTableAenderung (JFrame f) throws SQLException, IOException {
// TODO Auto-generated constructor stub
this.FirstFrame = f;
//Get Properties
Properties prop = new Properties();
prop.load(new FileInputStream("C:\\config.properties"));
//Get the sytem user with domain
String line;
Runtime rt = Runtime.getRuntime();
Process p = rt.exec("C:\\WINDOWS\\system32\\cmd.exe /c echo %userdomain%");
BufferedReader bri = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = bri.readLine()) != null) {
out.println(line);
}
bri.close();
panel = new JPanel();
back = new JButton("BackToVolaModel");
ok = new JButton("Ok");
cancel = new JButton("Cancel");
data = new Vector<Vector<Object>>();
columnNames = new Vector<String>();
try {
Class.forName ("net.sourceforge.jtds.jdbc.Driver");
//Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://" + prop.getProperty("server") + ":" + prop.getProperty("port") + "/" + prop.getProperty("database"), prop.getProperty("username"), prop.getProperty("password"));
Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://s0196vss132:1433/ScenarioGenerator", prop.getProperty("username"), prop.getProperty("password"));
Statement st = con.createStatement();
//ResultSet maxRs = st.executeQuery("SELECT * FROM tblQADataPoints");
ResultSet maxRs = st.executeQuery("SELECT * FROM Logging");
//ResultSet DateRs = st.executeQuery("SELECT * FROM tblQADataPoints WHERE Datum = ");
ResultSetMetaData metaData=maxRs.getMetaData();
final int columns = metaData.getColumnCount();
for ( int i = 1; i <= columns; i++ ) {
columnNames.addElement(metaData.getColumnName(i));
}
while(maxRs.next()){
Vector<Object> row = new Vector<Object>(columns);
for ( int i = 1; i <= columns; i++ ) {
row.addElement(maxRs.getObject(i));
}
data.addElement(row);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
f1 = new JFrame("SmileFitting");
table = new JTable(data, columnNames);
table.getDefaultEditor(String.class).addCellEditorListener(this);
column = table.getColumnModel().getColumn(1);
comboBox = new JComboBox();
comboBox.addItem("OK");
comboBox.addItem("overwrite");
comboBox.addItem("missing");
comboBox.addItem("suspect");
column.setCellEditor(new DefaultCellEditor(comboBox));
panel.add(back);
panel.add(ok);
panel.add(cancel);
f1.setLocation(501, 0);
f1.setSize(500, 500);
f1.add(new JScrollPane(table));
f1.add(panel, BorderLayout.SOUTH);
f1.setDefaultCloseOperation(f1.EXIT_ON_CLOSE);
f1.setVisible(true);
ok.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if ( ok.getText() == "Ok") {
//GapsFilling gaps = new GapsFilling();
f1.setEnabled(false);
JFrame f = new JFrame("JProgressBar");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content = f.getContentPane();
JProgressBar progressBar = new JProgressBar();
progressBar.setIndeterminate(true);
Border border = BorderFactory.createTitledBorder("Working...");
progressBar.setBorder(border);
content.add(progressBar, BorderLayout.NORTH);
f.setSize(300, 100);
f.setVisible(true);
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
}
}
});
cancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if ( cancel.getText() == "Cancel") {
exit(99);
}
}
});
back.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if ( back.getText() == "BackToVolaModel") {
FirstFrame.setEnabled(true);
f1.dispose();
}
}
});
}
@Override
public void editingCanceled(ChangeEvent arg0) {
// TODO Auto-generated method stub
System.out.println("Editing of a cell has been canceled.");
System.out.println("editingCanceled: " + arg0.getSource());
}
@Override
public void editingStopped(ChangeEvent arg0) {
// TODO Auto-generated method stub
System.out.println("A cell has been edited.");
System.out.println("editingStopped: " + arg0.getSource());
}
}
Ich danke Euch schon einmal für Eure Hilfen!
lG