gpt4 book ai didi

java - 根据第一个 JComboBox 的选择使第二个 JCombobox 可见

转载 作者:行者123 更新时间:2023-12-02 02:49:20 29 4
gpt4 key购买 nike

我正在制作一个医疗药物软件程序,我希望用户能够从由类别数组填充的 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 dynamically adding components

总之,添加新组件后调用revalidate()。这是必要的,因为在监听器中,您要动态添加组件,因此您需要指示布局管理器重新验证并重新绘制脏区域。

关于java - 根据第一个 JComboBox 的选择使第二个 JCombobox 可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57120841/

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