在设置了SCROLL_TAB_LAYOUT标签布局策略的情况下,从JTabbedPane的尾部删除单个标签后,如何将剩余的标签滚动到可见的页面。
默认行为似乎是什么都不做-用户被迫使用滚动按钮将其余的选项卡带回到视图中(整个选项卡行变为空)。
如果您在示例中重复单击“删除”按钮,您会明白我的意思。如果删除了足够多的标签,最终您将得到空白的标签行。
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
public class FooTest extends JFrame {
public FooTest() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
final JTabbedPane tabs = new JTabbedPane();
tabs.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
add(tabs, BorderLayout.CENTER);
for (int i = 0; i < 10; i++) {
tabs.addTab("Long tab name " + i, new JPanel());
tabs.setSelectedIndex(i);
}
JButton button = new JButton("Remove");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (tabs.getTabCount() > 0) {
tabs.removeTabAt(tabs.getTabCount() - 1);
}
}
});
add(button, BorderLayout.PAGE_END);
setSize(400, 400);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new FooTest().setVisible(true);
}
});
}
}
换句话说,从尾部移开后如何确保尽可能多的标签可见?
答案 0 :(得分:1)
从尾部移开后,如何确保尽可能多的标签可见?
Swing使用Action
来执行组件的常用功能。
您可以在删除标签页之后手动调用Action
来滚动标签页:
tabs.removeTabAt(tabs.getTabCount() - 1);
ActionMap am = tabs.getActionMap();
Action action = am.get("scrollTabsBackwardAction");
action.actionPerformed(new ActionEvent(tabs, ActionEvent.ACTION_PERFORMED, ""));
查看Key Bindings以获得每个Swing组件所支持的动作列表。