JTabbedPane 跟踪上一个选项卡选择
JTabbedPane track previous tab selection
我有一个 class 扩展了 BasicTabbedPaneUI 并覆盖了一些绘制组件。
我希望能够将 addMouseListener 添加到 class 我用它来检查用户何时选择选项卡、当前选项卡索引和上一个选项卡索引。
注意: 用户可以通过键盘导航到选项卡,而不仅仅是单击选项卡,我希望能够确保之前的索引跟踪这一点。因此,在下面的示例中,无论用户是通过键盘还是鼠标导航到它,preIndex 都将等于先前的索引。
有什么想法吗?
tabbedPane.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
JTabbedPane tabP = (JTabbedPane) e.getSource();
int currIndex = tabP.indexAtLocation(e.getX(), e.getY());
int prevIndex = ?????
}
});
非常感谢!!!!
我会使用更改侦听器而不是鼠标侦听器(在两种情况下都会调用它:用于鼠标和按键事件触发的选项卡更改)。如果您无法确定之前选择的选项卡,您可以使用以下方法:将当前选择的选项卡索引保存为选项卡式窗格的客户端 属性。
private static final String OLD_TAB_INDEX_PROPERTY = "oldTabIdx";
tabbedPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
JTabbedPane tabP = (JTabbedPane) e.getSource();
int currIndex = tabP.getSelectedIndex();
int oldIdx = 0;
Object old = tabP.getClientProperty(OLD_TAB_INDEX_PROPERTY);
if (old instanceof Integer) {
oldIdx = (Integer) old;
}
tabP.putClientProperty(OLD_TAB_INDEX_PROPERTY, currIndex);
// now we can use old and current index
}
});
我有一个 class 扩展了 BasicTabbedPaneUI 并覆盖了一些绘制组件。
我希望能够将 addMouseListener 添加到 class 我用它来检查用户何时选择选项卡、当前选项卡索引和上一个选项卡索引。
注意: 用户可以通过键盘导航到选项卡,而不仅仅是单击选项卡,我希望能够确保之前的索引跟踪这一点。因此,在下面的示例中,无论用户是通过键盘还是鼠标导航到它,preIndex 都将等于先前的索引。
有什么想法吗?
tabbedPane.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
JTabbedPane tabP = (JTabbedPane) e.getSource();
int currIndex = tabP.indexAtLocation(e.getX(), e.getY());
int prevIndex = ?????
}
});
非常感谢!!!!
我会使用更改侦听器而不是鼠标侦听器(在两种情况下都会调用它:用于鼠标和按键事件触发的选项卡更改)。如果您无法确定之前选择的选项卡,您可以使用以下方法:将当前选择的选项卡索引保存为选项卡式窗格的客户端 属性。
private static final String OLD_TAB_INDEX_PROPERTY = "oldTabIdx";
tabbedPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
JTabbedPane tabP = (JTabbedPane) e.getSource();
int currIndex = tabP.getSelectedIndex();
int oldIdx = 0;
Object old = tabP.getClientProperty(OLD_TAB_INDEX_PROPERTY);
if (old instanceof Integer) {
oldIdx = (Integer) old;
}
tabP.putClientProperty(OLD_TAB_INDEX_PROPERTY, currIndex);
// now we can use old and current index
}
});