我创建了一个 JComboBox,我想从中获取值。这是我编写的代码:
final JComboBox jc = new JComboBox();
jc.addItem("ARR");
jc.addItem("SRR");
myPanel.add(jc, gbc);
String pat_order;
jc.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent ie) {
String order = (String) jc.getSelectedItem();
pat_order = order;
}
});
问题是我收到一个错误:“局部变量 pat_order 是从whitin内部类访问的;需要声明为final”,当我将final放在pat_order声明中时,得到另一个错误:“无法为最终变量pat_order赋值”。 抱歉,我是 Java GUI 的初学者。提前致谢。
最佳答案
这是你的程序,它工作正常,我不知道你为什么会收到错误,即使你做了 pat_Order Final(Private) ,我只是使用 pat_Order 的静态方法。为了表明您已从组合框中选择了内容,我添加了对话框,它显示了您选择的内容,,。 :) 如果您对我的计划还有任何疑问,请随时问我, 导入 java.awt.event.ItemListener;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class comboBoxProblem extends JFrame{
static JPanel myPanel = new JPanel();
static String pat_order;
public static void main(String [] args)
{
new comboBoxProblem().show();
}
public comboBoxProblem()
{
setTitle("Combo");
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
myPanel.setLayout(new GridBagLayout());
myPanel.setBorder(BorderFactory.createTitledBorder("Button's"));
final JComboBox jc = new JComboBox();
jc.addItem("ARR");
jc.addItem("SRR");
gbc.gridx = 0;
gbc.gridy = 1;
jc.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent ie)
{
String order = (String) jc.getSelectedItem();
pat_order = order;
JOptionPane.showConfirmDialog(null, pat_order, " Message Dialog Box", JOptionPane.DEFAULT_OPTION );
}
});
myPanel.add(jc, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
getContentPane().add(myPanel, gbc);
pack();
}
}
关于java - 从 JComboBox 获取值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16410260/