java - 根据第一个 JComboBox 的选择,使第二个 JCombobox 可见
问题描述
我正在制作一个医疗药物软件程序,我希望用户能够从由类别数组填充的 jcombo 框中选择疾病类别(呼吸系统疾病、心血管疾病等)。
选择此类别后,我希望另一个 jcombobox 仅填充与该类别相关的药物。
我遇到的问题是,我似乎无法获取 jcombobox 中的值并在 If 语句中使用这些值,然后用相关药物填充或使第二个框可见。
public CatergoryBar(ArrayList<Catergory> category)
{
new GridBagLayout();
Dimension dim = getPreferredSize();
dim.width = 250;
setPreferredSize(dim);
setBorder(BorderFactory.createEtchedBorder());
c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
c.weightx = 1;
c.weighty = 1;
c.fill = GridBagConstraints.NONE;
categoryBox = new JComboBox(category.toArray());
add(categoryBox, c);
c.gridy++;
categoryBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
String item = String.valueOf(categoryBox.getSelectedItem());
if(item.equals("Respiratory Disease"))
{
respBox = new JComboBox(PFormulary.respDiseases.toArray());
add(respBox, c);
c.gridy++;
}
}
});{
如果我在项目侦听器之外正常执行此操作,则会显示我的呼吸组合框,但是一旦我将其放入项目侦听器中,当我单击“呼吸系统疾病”时,什么也不会弹出。
提前致谢!
解决方案
可能重复:java swing动态添加组件
总之,revalidate()
添加新组件后调用。这是必要的,因为在侦听器中,您正在动态添加组件,因此您需要指示布局管理器重新验证并重新绘制脏区域。
推荐阅读
- python - 将元组转换为列表的大多数 Pythonic 方法,每个现有元素之后都有新元素
- java - Java中的变量原语和对象本身(与术语相关的问题)吗?
- windows - 使用 nw-gyp 为 Windows PouchDB 构建 leveldown 模块时出现 Invalid Version TypeError
- python - 轴未在 Matplotlib 中显示
- html - 汉堡在悬停时仅切换一个栏变化
- java - 如何从远程 Jenkins 触发本地 maven 项目?
- c++ - 更改键入 QTable 时显示的字体
- php - 如何在没有临时文件的情况下强制 zip 下载?
- reactjs - 为什么我的样式组件不适用于文本装饰?
- python - 如何使用 Python Flask 将本地生成的信息流式传输到 API 函数?