所以我试图让按钮遍历我的每个标签面板,它工作得很好。现在,每当其中一个标签到达结尾时,我必须让它们重复运行标签。我使“上一个”按钮工作,它工作,但我似乎无法得到正确的数字表达式使“下一个”按钮工作。我尝试了很多不同的数字表达式,但这是我到目前为止所做的:
next = new JButton("next");
next.addActionListener(
new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
tabs.setSelectedIndex(tabs.getSelectedIndex()+1);
tabs.setSelectedIndex(tabs.getSelectedIndex()-7);
}
});
previous = new JButton("previous");
previous.addActionListener(
new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
tabs.setSelectedIndex(tabs.getSelectedIndex()-1);
tabs.setSelectedIndex(tabs.getSelectedIndex()+6);
}
});
这是我每次尝试下一个按钮时都会出现的异常:
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: -6, Tab count: 6
当我终于开始工作时,它会跳过最后一个标签,所以我真的不知道我做错了什么,但我感觉是因为数字表达。
答案 0 :(得分:3)
你应该对边缘情况使用一个循环。
像这样。
next = new JButton("next");
next.addActionListener(
new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
int nextIndex = tabs.getSelectedIndex()+1;
tabs.setSelectedIndex( (nextIndex < tabs.getTabCount())?nextIndex:0 );
}
});
previous = new JButton("previous");
previous.addActionListener(
new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
int previousIndex = tabs.getSelectedIndex()-1;
tabs.setSelectedIndex((previousIndex < 0)?tabs.getTabCount()-1:previousIndex);
}
});