[英]How can I create a table that updates an ArrayList every time a user enters a value in Java?
我有2列,x和y。 每次用戶編輯列時,我希望將該數據附加到相應的ArrayList列(對於x,xValues,對於y,yValues)。 通過閱讀關於Tables和TabelModels的Oracle教程,我假設我需要在表中添加某種監聽器。 我該怎么辦? 到目前為止,這是我的代碼:
public class MainTable extends JPanel {
private static final long serialVersionUID = -5093783987473381647L;
private ArrayList<Integer> xValues = new ArrayList<Integer>();
private ArrayList<Integer> yValues = new ArrayList<Integer>();
public MainTable() {
super(new GridLayout(1,0));
createFrame();
JTable table = new JTable(new TheTabelModel());
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}
class TheTabelModel extends AbstractTableModel {
private static final long serialVersionUID = -1698344960140377275L;
private String[] columnNames = {"x", "y"};
private Object[][] data = {
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
};
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public Class<?> getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
if (col < 2) {
return false;
} else {
return true;
}
}
}
private void createFrame() {
JFrame frame = new JFrame("SimpleTableDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
frame.setSize(new Dimension(510, 200));
frame.setLocationRelativeTo(null);
frame.add(this);
}
您是否可以實現一個觸發器來調用Java函數,而Java函數又會在Java代碼中更新您的ArrayList?
請檢查以下內容: https : //docs.oracle.com/cd/F49540_01/DOC/java.815/a64686/04_call2.htm
步驟:
CREATE OR REPLACE PROCEDURE log_sal (
emp_id NUMBER, old_sal NUMBER, new_sal NUMBER)
AS LANGUAGE JAVA
NAME 'DBTrigger.logSal(int, float, float)';
觸發器,調用該過程:
CREATE OR REPLACE TRIGGER sal_trig
AFTER UPDATE OF sal ON emp
FOR EACH ROW
WHEN (new.sal > 1.2 * old.sal)
CALL log_sal(:new.empno, :old.sal, :new.sal);
您可以將觸發器設置為在更新時運行,這樣每次用戶進行更新時,它都會調用該函數,該函數會更新ArrayList。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.