我正在制作数据库应用程序,我对这个问题持续了一个星期。我也不确定如何在我的问题上发布标题,但我希望你能理解。我有两个框架:城市和国家。
城市框架:
国家框架:
当我点击城市框架中的“搜索”按钮时,它会打开一个国家/地区框架。当我点击Country框架中的表格时,它会通过此方法将选定行和列“Country”中的值传递给变量tableValCountry:
table.addMouseListener(new MouseListener(){
@Override
public void mouseClicked(MouseEvent e) {
int selRow = table.getSelectedRow();
String tableValCountry = (String)table.getValueAt(selRow, 1);
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}});
然后我想将tableValCountry变量传递给City框架,并通过单击“添加”按钮更新其中一个textfield。我怎样才能做到这一点?提前谢谢。
P.S。我可以用getter和setter做到这一点,但是我需要在City框架中有一些“获取”按钮来检索值(我不想这样做)。并且City框架必须始终可见。
答案 0 :(得分:2)
Swing的做事方式是让搜索面板实现getSelectedCountry()
方法和在用户选择国家时通知的听众列表。
当用户点击搜索时,您的主要组件将创建搜索面板并将自己注册为搜索面板事件的监听器。事件处理程序将获取搜索面板的选定国家/地区并填充文本字段。
当用户选择国家/地区时,搜索面板实现只需通知其所有侦听器。
我认为this article 非常清楚。
答案 1 :(得分:2)
请参阅The Use of Multiple JFrames, Good/Bad Practice?
对于这个用例,模态对话框将是完美的。在对话框设置为可见后,可以在该行中查询这些值。
答案 2 :(得分:0)
我面临同样的问题,但我的替代解决方案是线程机制