Прокрутите оставшиеся вкладки, чтобы отобразить их после удаления вкладок из SCROLL_TAB_LAYOUT JTabbedPane.
Как прокрутить оставшиеся вкладки до видимых после удаления одной вкладки из хвоста JTabbedPane с установленной политикой макета вкладок SCROLL_TAB_LAYOUT.
Поведение по умолчанию, похоже, ничего не делает - пользователь вынужден использовать кнопки прокрутки, чтобы вернуть оставшиеся вкладки обратно в вид (вся строка вкладок становится пустой).
Вы можете понять, что я имею в виду, если вы несколько раз нажмете кнопку "Удалить" в моем примере. Если вы удалите достаточно вкладок, вы в конечном итоге получите пустую строку вкладок.
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);
}
});
}
}
Другими словами, как обеспечить видимость как можно большего количества вкладок после удаления из хвоста?
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, ""));
Проверьте привязки клавиш для списка поддержки действий для каждого компонента Swing.