gpt4 book ai didi

java - 如何在 SWT 中创建一个根据另一个 CCombo 的值而变化的 CCombo?

转载 作者:行者123 更新时间:2023-12-01 12:56:25 24 4
gpt4 key购买 nike

我有 1 个 CCombo 或下拉菜单,其中包含项目类型,例如 "Shoes", "Shirts", "Pants"我想要第二个 CCombo 根据第一个 CCombo 的选择来更改其内容。例如,如果 Shirts被选中,我希望第二个 CCombo 为 "Small", "Medium", "Large" ,但是如果Shoes被选中,我希望第二个 CCombo 为 "8", "9", "10" 。对于第一个 CCombo,我有以下代码块:

final CCombo combo_2 = new CCombo(composite, SWT.BORDER);
combo_2.setToolTipText("");
combo_2.setListVisible(true);
combo_2.setItems(new String[] {"Shoes","Pants","Shirt"});
combo_2.setEditable(false);
combo_2.setBounds(57, 125, 109, 21);
combo_2.setText("Type");
combo_2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String typex = combo_2.getText();
System.out.println("Type: "+ typex +" selected");
}});

只要项目类型发生更改,它就会监听并打印。对于第二个 CCombo,我有以下代码块:

    final CCombo combo_1 = new CCombo(composite, SWT.BORDER);
combo_1.setToolTipText("");
combo_1.setListVisible(true);
combo_1.setItems(new String[] {"Small","Medium","Large"});
combo_1.setEditable(false);
combo_1.setBounds(57, 208, 109, 21);
combo_1.setText("Size");
combo_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String typey = combo_1.getText();
System.out.println("Size "+typey+" selected");
}});

当我尝试获取 typex 的值时在第二个 CCombo 的区 block 中,Ecipse 说 "typex cannot be resolved to a variable"

最佳答案

您在Listener中定义了typextypey,因此,它们仅在所述监听器中有效。这是因为他们的scope仅限于它们在 (widgetSelected()) 中定义的方法。

您可以做两件事:

  1. typextypey 定义为类的字段。然后就可以从类中的任何非静态方法访问它们。
  2. 像这样定义您的听众:


new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
String typex = combo_2.getText();
String typey = combo_1.getText();
System.out.println(typex + " " + typey);
}
}
<小时/>

顺便说一句:除非确实必要,否则不要使用 setBounds。请改用布局。这篇文章应该会有帮助:

Understanding Layouts in SWT

关于java - 如何在 SWT 中创建一个根据另一个 CCombo 的值而变化的 CCombo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23851496/

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