Java JTextField未更新
我有两个独立的组件,一个是扩展Java JTextField未更新,java,swing,jtextfield,Java,Swing,Jtextfield,我有两个独立的组件,一个是扩展JTable的类,另一个是扩展JPanel(包含表单)的类 当应用程序运行时,这两个文件都显示在同一个视图中,当我单击表上的一行时,我希望表单上的textfiled得到更新,但什么也没有发生 我使用observer(form类是监听器)模式将单击的行发送到包含要更新的表单字段的类/面板,接收到值,但不会更新textfields 下面的代码位于form类中,它更新表单字段,form类作为侦听器添加到table类中,单击表行时触发下面的方法 public void on
JTable
的类,另一个是扩展JPanel
(包含表单)的类
当应用程序运行时,这两个文件都显示在同一个视图中,当我单击表上的一行时,我希望表单上的textfiled得到更新,但什么也没有发生
我使用observer(form类是监听器)模式将单击的行发送到包含要更新的表单字段的类/面板,接收到值,但不会更新textfields
下面的代码位于form类中,它更新表单字段,form类作为侦听器添加到table类中,单击表行时触发下面的方法
public void onTableRowClick(CollectedParcelEvent e)
{
JOptionPane.showMessageDialog(null,"test", "test", 1);
txtCost.setText(Double.toString(e.getSource().getCost()));
txtCustomerName.setText(e.getSource().getCustomer().getName());
txtCost.repaint();
txtCost.revalidate();
}
我不明白你为什么要调用
revalidate()代码>因为它只是告诉布局管理器根据新添加或删除的组件列表进行重置
有关和的更多答案,请参阅此链接
也许,repaint()代码>应足以进行所需的更改
所以,检查一下你的方法,看看它是否真的被解雇了。我不明白你为什么要调用revalidate()代码>因为它只是告诉布局管理器根据新添加或删除的组件列表进行重置
public void onTableRowClick(CollectedParcelEvent e)
{
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
//JOptionPane.showMessageDialog(null,"test", "test", 1);
txtCost.setText(Double.toString(e.getSource().getCost()));
txtCustomerName.setText(e.getSource().getCustomer().getName());
}
});
}
有关和的更多答案,请参阅此链接
也许,repaint()代码>应足以进行所需的更改
所以,检查你的方法,看看它是否真的被解雇了
public void onTableRowClick(CollectedParcelEvent e)
{
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
//JOptionPane.showMessageDialog(null,"test", "test", 1);
txtCost.setText(Double.toString(e.getSource().getCost()));
txtCustomerName.setText(e.getSource().getCustomer().getName());
}
});
}
事件在单个事件线程上处理。在这种情况下,GUI对其他事件没有响应,应该推迟以后使用invokeLater执行此类操作
事件在单个事件线程上处理。在那里,GUI对其他事件没有响应,应该推迟以后使用invokeLater执行这些操作。请输入完整的代码,以便更好地理解您的问题。您是否运行了调试以查看textField是否真的更新了?若要查看它是否来自UIC,是否确定在单击表行时触发了该方法?你不应该重新油漆和重新验证。设置文本应该可以很好地工作,也许这就是原因。什么都没有发生,或者它只是“冻结”?为了获得更好的帮助,请尽快发布一个简短的、可运行的、可编译的,大约在上午一点左右。发布完整的代码,以便更好地理解您的问题。您是否在调试中运行,以查看文本字段是否真的更新了?若要查看它是否来自UIC,是否确定在单击表行时触发了该方法?你不应该重新油漆和重新验证。设置文本应该可以正常工作,也许这就是原因。什么都没有发生,或者它只是“冻结”?为了更好地帮助您,请尽快发布一个简短、可运行、可编译的,大约在上午一点左右的问题//这是表类公共类TableParcelList扩展JTable{//这是表类,呈现表结构,不定义事件处理程序}//这是表类公共类TableParcelList扩展了JTable{//这是表类,呈现表结构,不定义事件处理程序}@ykel这样我们永远无法解决您的问题。给我们看更多的代码。我可以给出一个使用相同STMT的示例。您已经拥有并且将毫无问题地工作。因此,如果我们能获得更多信息,那就更好了。@ykel这样我们永远无法解决您的问题。给我们展示更多的代码。我可以给出一个使用相同STMT的示例。你已经有了,而且会毫无问题地工作。所以,如果我们能得到更多的信息就更好了。