更改 GridLayout 中两个组件的位置
Changing the positions of two components in GridLayout
我有一个带有 GridLayout 和一些组件的面板。下面是代码示例。
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(5,1));
JButton[] buttons = new JButton[5];
for (int i = 0; i < buttons.length; i++)
{
buttons[i] = new JButton(i + "");
panel.add(buttons[i]);
}
我想要的是在例子中可以调换这些按钮的位置,我试着写了一个方法。但我设法做到这一点的唯一方法是删除所有这些,然后按正确的顺序添加。那么有没有更好的方法编写方法 swap(int index1, int index2)
来交换网格布局面板中的两个组件?
只删除这两个按钮,然后使用 add method which takes an index.
重新添加它们
static void swap(Container panel,
int firstIndex,
int secondIndex) {
if (firstIndex == secondIndex) {
return;
}
if (firstIndex > secondIndex) {
int temp = firstIndex;
firstIndex = secondIndex;
secondIndex = temp;
}
Component first = panel.getComponent(firstIndex);
Component second = panel.getComponent(secondIndex);
panel.remove(first);
panel.remove(second);
panel.add(second, firstIndex);
panel.add(first, secondIndex);
}
注意:添加时顺序很重要。始终先添加较低的索引。
我有一个带有 GridLayout 和一些组件的面板。下面是代码示例。
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(5,1));
JButton[] buttons = new JButton[5];
for (int i = 0; i < buttons.length; i++)
{
buttons[i] = new JButton(i + "");
panel.add(buttons[i]);
}
我想要的是在例子中可以调换这些按钮的位置,我试着写了一个方法。但我设法做到这一点的唯一方法是删除所有这些,然后按正确的顺序添加。那么有没有更好的方法编写方法 swap(int index1, int index2)
来交换网格布局面板中的两个组件?
只删除这两个按钮,然后使用 add method which takes an index.
重新添加它们static void swap(Container panel,
int firstIndex,
int secondIndex) {
if (firstIndex == secondIndex) {
return;
}
if (firstIndex > secondIndex) {
int temp = firstIndex;
firstIndex = secondIndex;
secondIndex = temp;
}
Component first = panel.getComponent(firstIndex);
Component second = panel.getComponent(secondIndex);
panel.remove(first);
panel.remove(second);
panel.add(second, firstIndex);
panel.add(first, secondIndex);
}
注意:添加时顺序很重要。始终先添加较低的索引。