【发布时间】:2026-02-04 20:00:01
【问题描述】:
我在 java-eclipse 中编码并尝试使用组合框获取值,但这些值在其他要使用的函数中不可见。每当我尝试将类移动到声明组合框的类内部时,函数变量就会变得不可见。 这是一步一步的问题; 1. 这是我想使用组合框值的方法;
public void ata(int P1_x, int P1_y, int P2_x, int P2_y, String P1_direction, String P2_direction,int array[][],int array1[][])
{
if(P1_direction=="Horizontal")
{
gemiatadikey(P1_x,P1_y,array);
}
else
{
gemiatayatay(P1_x,P1_y,array);
}
if(P2_direction == "Horizontal")
{
gemiatadikey(P2_x, P2_y,array1);
}
else
gemiatayatay(P2_x, P2_y,array1);
起初我自己初始化值并且它正在工作,但后来我需要通过使用面板上的任何东西从用户那里获取这些值,因为我对 JFrame 和 Panels 没有经验,所以除了使用之外我找不到任何东西组合框。从 WindowBuilder 的设计部分,我添加了组合框并在中添加了一些选择。然后将一些代码添加到我的项目中,我尝试使用此代码获取值;
public void actionPerformed(ActionEvent e) {
JComboBox comboBox = new JComboBox();
comboBox.setModel(new DefaultComboBoxModel(new String[] {"Horizontal", "Vertical"}));
String P1_direction = comboBox.getSelectedItem().toString();
JComboBox comboBox_1 = new JComboBox();
comboBox_1.setModel(new DefaultComboBoxModel(new String[] {"Horizontal", "Vertical"}));
String P2_direction = comboBox_1.getSelectedItem().toString();
JComboBox comboBox_2 = new JComboBox();
comboBox_2.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"}));
String P1_x = comboBox_2.getSelectedItem().toString();
int P1_coordinate_x = Integer.parseInt(P1_x);
JComboBox comboBox_3 = new JComboBox();
comboBox_3.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"}));
String P1_y = comboBox_3.getSelectedItem().toString();
int P1_coordinate_y = Integer.parseInt(P1_y);
JComboBox comboBox_4 = new JComboBox();
comboBox_4.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"}));
String P2_x = comboBox_4.getSelectedItem().toString();
int P2_coordinate_x = Integer.parseInt(P2_x);
JComboBox comboBox_5 = new JComboBox();
comboBox_5.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"}));
String P2_y = comboBox_5.getSelectedItem().toString();
int P2_coordinate_y = Integer.parseInt(P2_y);
}
});
然后我尝试将我的“ata”方法称为;
ata(P1_coordinate_x, P1_coordinate_y, P2_coordinate_x, P2_coordinate_y, P1_direction, P2_direction, gemiOlanArray, gemiOlanArray1);
但它不起作用,因为这个声明没有看到(或得到) P1_coordinate_x ,......等等......我很确定我做错了什么,但我不熟悉这些概念所以怎么能我处理这个?谢谢
【问题讨论】:
-
我认为您不应该在每次更改时都创建一个新的
ComboBoxModel? -
我如何编辑这段代码,从你的角度来看,我似乎不理解这个组合框的概念。您能提出一些正确使用它的建议吗?
-
@user2962529:如果我能更好地理解您的问题,我可以提出更多建议。我建议你花更多的精力来提出一个更好的问题。稍加努力就可以获得更好的答案。
-
希望这个版本更清晰,抱歉第一次提问不佳。
标签: java swing methods combobox frame