Java 如何在不同窗体上修改控件?

Java 如何在不同窗体上修改控件?,java,swing,netbeans,Java,Swing,Netbeans,我需要使用JTable的第一列的内容来设置JComboBox下拉列表中的值。 问题是JTable的形式不同(JFrame),因此私有JComboBox不能直接访问。 如何将信号和/或事件从JTable表单发送到JComboBox表单,让它知道需要更新其下拉内容?我不关心数据,我可以创建一个公共字符串[]或其他东西,但是我如何正确地通知JComboBox它需要自己更新呢 Swing MVC模型会说您应该更新模型对象。重新显示JComboBox时,它会看到新的模型值。Swing MVC模型会说您应该

我需要使用JTable的第一列的内容来设置JComboBox下拉列表中的值。 问题是JTable的形式不同(JFrame),因此私有JComboBox不能直接访问。
如何将信号和/或事件从JTable表单发送到JComboBox表单,让它知道需要更新其下拉内容?我不关心数据,我可以创建一个公共字符串[]或其他东西,但是我如何正确地通知JComboBox它需要自己更新呢

Swing MVC模型会说您应该更新模型对象。重新显示JComboBox时,它会看到新的模型值。

Swing MVC模型会说您应该更新模型对象。重新显示JComboBox时,它会看到新的模型值

我需要使用
JTable
第一列的内容来设置
JComboBox
下拉列表中的值。问题在于
JTable
的形式不同(
JFrame
),因此无法直接访问私有
JComboBox

为什么
JComboBox
JTable
应该相互访问?这些只是视图组件。如果您想在不显示表格的情况下显示组合框(例如,在测试中),会发生什么情况?如果它直接从
JTable
检索it数据,则会出现严重问题。 创建
JTable
的那一刻,您就拥有了一个
TableModel
,其中包含
JTable
的实际数据。应该共享的是该模型(或者至少是该模型中的数据)

因此,让combobox的模型和表的模型共享相同的数据,一切都会好起来

我需要使用
JTable
第一列的内容来设置
JComboBox
下拉列表中的值。问题在于
JTable
的形式不同(
JFrame
),因此无法直接访问私有
JComboBox

为什么
JComboBox
JTable
应该相互访问?这些只是视图组件。如果您想在不显示表格的情况下显示组合框(例如,在测试中),会发生什么情况?如果它直接从
JTable
检索it数据,则会出现严重问题。 创建
JTable
的那一刻,您就拥有了一个
TableModel
,其中包含
JTable
的实际数据。应该共享的是该模型(或者至少是该模型中的数据)


因此,让combobox的模型和表的模型共享相同的数据,一切都会好起来

如果需要从jframe外部访问combobox,请将其公开。更好的是,添加一个返回其值的公共方法。似乎不能将JComboBox公开。这是我在netbeans调色板中使用的一个swing控件。我尝试使用公共方法将JComboBox模型返回到想要更改它的表单,但编译器抱怨非静态变量(JComboBox)不能从静态上下文引用。您可以向combobox添加一个侦听器,如果需要从jframe外部访问combobox,可以让它更新您的状态,公开。更好的是,添加一个返回其值的公共方法。似乎不能将JComboBox公开。这是我在netbeans调色板中使用的一个swing控件。我尝试使用公共方法将JComboBox模型返回到想要更改它的表单,但编译器抱怨无法从静态上下文引用非静态变量(JComboBox)。您可以向combobox添加侦听器,并让它更新您的状态。模型对象是私有的。如何让JComboBox知道它需要从不同的表单更新其模型?该模型应该在UI元素之间共享。他们应该得到需要显示的信息。模型对象是私有的。如何让JComboBox知道它需要从不同的表单更新其模型?该模型应该在UI元素之间共享。他们应该得到他们需要展示的信息。你说的是正确的。表格数据将保存到文件中。但我的任务是在用户更改表时更新组合框内容。包含表的表单通常不可见,只有在需要更改时才可见。对表的更改保存到一个文件中,组合框可以从中更新,但组合框需要知道何时更新。我正试图找到ActionListener教程,但页面是@jacknad,
TableModel
在数据更改时触发事件。您可以向该模型添加一个侦听器。回到原始答案,我将让combobox和表共享相同的数据。现在我只需要弄清楚如何在组合框打开时使用共享数据修改它,但这是一个不同的问题。非常感谢。你说的是对的。表格数据将保存到文件中。但我的任务是在用户更改表时更新组合框内容。包含表的表单通常不可见,只有在需要更改时才可见。对表的更改保存到一个文件中,组合框可以从中更新,但组合框需要知道何时更新。我正试图找到ActionListener教程,但页面是@jacknad,
TableModel
在数据更改时触发事件。您可以向该模型添加一个侦听器。回到原始答案,我将让combobox和表共享相同的数据。现在我只需要弄清楚如何在组合框打开时使用共享数据修改它,但这是一个不同的问题。非常感谢。