gpt4 book ai didi

java - 如何知道从另一个框架中选择了哪一行?

转载 作者:行者123 更新时间:2023-12-02 04:17:34 24 4
gpt4 key购买 nike

在第一个 Jframe 中,我有一个从数据库填充的 JTable,我需要将所选 jTable 的数据传递到另一个框架。

所以我需要从另一个 JInternalFrame 知道第一个 Jframe 中选择了哪一行

public void showTableData() {
try {
Class.forName(driverName);
Connection con = DriverManager.getConnection(url, userName, password);
String sql = "SELECT t.name, t.exam, l.coursename\n"
+ "FROM exam AS t\n"
+ "INNER JOIN Course as l ON (t.LendaID=l.LendaID)";
PreparedStatement ps = con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
int i = 0;
Jtable1.setModel(DbUtils.resultSetToTableModel(rs));

} catch (Exception ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, ex.getMessage(), "Error",
JOptionPane.ERROR_MESSAGE);
}
}

这是我在第一个 Jframe 中的表格

最佳答案

无论组件的数量有多少,作为一个简单的解决方案,您都可以创建一个 CourseEventDispatcher 类作为在整个应用程序中调度类(class)事件的中心点。

public class CourseEventDispatcher {
private List<CourseEventSubscriber> subscribers;

// ...

public void dispatchEvent(CourseEvent event) {
for(CourseEventSubscriber: subscribers) {
if( event.getSource() != subscriber ) {
subscriber.onCourseEvent(event);
}
}
}
}

对于每个相关 View ,都有一个 Controller ,它是一个 CourseEventSubscriber:

public class SomeFrameController implements CourseEventSubscriber {
private CourseEventDispatcher courseEventDispatcher;

public SomeFrameController(CourseEventDispatcher courseEventDispather) {
this.courseEventDispatcher = courseEventDispatcher;
}

public void addSelectionListener() {
// ...
table.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent event) {
doYourOwnStuff();
// then dispatch the event
courseEventDispatcher.dispatch(new CourseEvent(this, event));
}
}
);
}

// from some other view
public void onCourseEvent(CourseEvent event) {
// process the event
// e.g. event.getEvent()
}
}

而CourseEvent是一个简单的类

public class CourseEvent {
private CourseEventSubscriber source;
private EventObject event;

public CourseEvent(CourseEventSubscriber source, EventObject event) {
this.source = source;
this.event = event;
}
// getters
}

创建调度程序后,您可以添加(注册) Controller 。

希望这能给您带来另一种视角。

关于java - 如何知道从另一个框架中选择了哪一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56654788/

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