在下面的代码中,我将JButton及其标签传递到我的createKeyboard()
方法中。目的是按照正确的顺序将JButton添加到JPanel,以便它们以QWERTY键盘格式正确显示。按钮及其对应的标签将从A-Z开始传递给此方法。
此方法对字母进行排序并将其添加到正确的面板中。我想知道是否有一种更有效的方法来执行此操作,因为您可以看到我正在使用多个for循环来实现此目的,但是我确信必须有一种更好的方法来执行此操作。
public void addKeyboard(char c, JButton button) {
String QP = "QWERTYUIOP";
String AL = "ASDFGHJKL";
String ZM = "ZXCVBNM";
keyboardQP = new ArrayList<JButton>(); //JButton ArrayLists
keyboardAL = new ArrayList<JButton>();
keyboardZM = new ArrayList<JButton>();
for (int i = 0; i < QP.length(); i ++) {
if (c == QP.charAt(i)) {
keyboardQP.add(button);
}
}
for (int i = 0; i < AL.length(); i ++) {
if (c == AL.charAt(i)) {
keyboardAL.add(button);
}
}
for (int i = 0; i < ZM.length(); i ++) {
if (c == ZM.charAt(i)) {
keyboardZM.add(button);
}
}
您可能会找到char
byindexOf
方法的索引,然后将其添加到ArrayList
相应的索引中。但是实例化列表时,需要预先设置列表大小。但这应该在构造函数中完成,因为ArrayList
每次在方法的主体内部创建new都是错误的,否则您将不能添加多个按钮。
String QP = "QWERTYUIOP";
keyboardQP = new ArrayList<>(QP.length());
int index;
if ((index = QP.indexOf(c)) >= 0)
keyboardQP.add(index, button);
在这种情况下,您不需要循环它。并且按钮将根据其顺序添加。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句