Java 有两个按钮影响同一标签
我是Java新手,我正在尝试使用Java 有两个按钮影响同一标签,java,swing,jframe,jbutton,actionlistener,Java,Swing,Jframe,Jbutton,Actionlistener,我是Java新手,我正在尝试使用JFrame和ActionListener创建两个按钮,它们将在标签中显示随机生成的数组,并对所述数组进行排序。我已经按下了显示随机生成的数组的按钮,但是我在排序时遇到了问题。是否有方法通过mybutton3访问使用mybutton4创建的数组来完成此操作 这是我为显示10个数字的随机数组的按钮所做的: if(e.getActionCommand().equals("myButton4")) { int[] Array = RandomArray.list
JFrame
和ActionListener
创建两个按钮,它们将在标签中显示随机生成的数组,并对所述数组进行排序。我已经按下了显示随机生成的数组的按钮,但是我在排序时遇到了问题。是否有方法通过mybutton3
访问使用mybutton4
创建的数组来完成此操作
这是我为显示10个数字的随机数组的按钮所做的:
if(e.getActionCommand().equals("myButton4"))
{
int[] Array = RandomArray.list();
String strArray[] = Arrays.stream(Array).mapToObj(String::valueOf).toArray(String[]::new);
label.setText("Array: ["+String.join(",", strArray)+"]");
}
如果我在button3
中使用了类似的东西,我可以让它输出一个排序的数组,但我需要该按钮对单击mybutton4
后显示的数组进行排序
这是我的排序按钮代码(仅显示排序的随机数组):
感谢您的评论和帮助。将类中的变量定义为:
public int[] getArray;
并相应地修改了每个按钮的getActionCommand
语句。现在它的工作原理与预期一致
if(e.getActionCommand().equals("myButton2"))
{
int[] sortArray = getArray;
Arrays.sort(sortArray);
String strArray[] = Arrays.stream(sortArray).mapToObj(String::valueOf).toArray(String[]::new);
label.setText("Array: ["+String.join(",", strArray)+"]");
}
if(e.getActionCommand().equals("myButton4"))
{
getArray = RandomArray.list();
String strArray[] = Arrays.stream(getArray).mapToObj(String::valueOf).toArray(String[]::new);
label.setText("Array: ["+String.join(",", strArray)+"]");
}
感谢MadProgrammer指出我的疏忽。在每个getActionCommand()中使用一个或多个实例字段?不,请阅读教程-了解本地和实例类型变量/字段之间的差异
int[]Array=RandomArray.list()
是本地定义的变量,其上下文为创建它的if
语句<代码>数组(顺便说一下,这是一个可怕的名字)需要定义为类的一个实例字段,该类想要使用它,而不需要一个,我们可以提供的就没有太多了,我们可以提供RPlus one来获取MadProgrammer的技巧并将其开发成一个解决方案。
if(e.getActionCommand().equals("myButton2"))
{
int[] sortArray = getArray;
Arrays.sort(sortArray);
String strArray[] = Arrays.stream(sortArray).mapToObj(String::valueOf).toArray(String[]::new);
label.setText("Array: ["+String.join(",", strArray)+"]");
}
if(e.getActionCommand().equals("myButton4"))
{
getArray = RandomArray.list();
String strArray[] = Arrays.stream(getArray).mapToObj(String::valueOf).toArray(String[]::new);
label.setText("Array: ["+String.join(",", strArray)+"]");
}