gpt4 book ai didi

java - 如何创建一个表,每次用户在 Java 中输入值时都会更新 ArrayList?

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:16 25 4
gpt4 key购买 nike

我有 2 列,x 和 y。每次用户编辑列时,我希望将该数据附加到该列各自的 ArrayList(对于 x,xValues,对于 y,yValues)。通过阅读有关表和 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 代码中的 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。

关于java - 如何创建一个表,每次用户在 Java 中输入值时都会更新 ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39839868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com