На самом деле это вопрос из двух частей.
1 - Если первая вкладка отключена, а кнопка существует, она все равно будет работать. Пользователь должен щелкнуть вкладку, чтобы увидеть, что она отключена.
2 - Можно ли отключить все вкладки?
Вот тестовый код.
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class JTabbedPanel {
public static void main(String args[]) {
JFrame frame = new JFrame("Devices");
JTabbedPane tabbedPane = new JTabbedPane();
JTextArea text = new JTextArea(100,100);
JPanel panel1, panel2, panel3;
JButton button1 = new JButton("Press Me");
button1.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0)
{
System.out.println("It still works");
}
});
panel1 = new JPanel();
panel1.add(button1);
panel2 = new JPanel();
panel2.add(text);
panel3 = new JPanel();
tabbedPane.setBackground(Color.yellow);
tabbedPane.setForeground(Color.black);
tabbedPane.addTab("Laptop", panel1);
tabbedPane.addTab("Desktop ", panel2);
tabbedPane.addTab("Notebook", panel3);
tabbedPane.setEnabledAt(0, false);
tabbedPane.setEnabledAt(2, false);
frame.add(tabbedPane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(550,350);
frame.setVisible(true);
}
}
Тест 1:
Выполните код «как есть», а первая и третья вкладки отключаются кнопкой. Когда появится диалоговое окно, кнопку все еще можно будет нажать на первой вкладке. Вторая вкладка включена. Щелкните вторую вкладку, и теперь пользователь не может получить доступ к первой вкладке, как ожидалось.
Вопрос 1: Может ли пользователь отслеживать, какие вкладки отключены а затем установите вкладку по умолчанию через tabbedPane.setSelectedIndex(1);
на ту, которая включена?
Тест 2:
Добавьте следующую строку кода. Теперь все вкладки отключены.
tabbedPane.setEnabledAt(1, false);
Теперь, когда все вкладки отключены, он по-прежнему будет по умолчанию на первой вкладке, а кнопка останется включенной.
Вопрос 2:
В сценарии, в котором все вкладки отключены по какой-либо причине, как лучше всего с этим справиться? Я ожидал, что все компоненты на вкладке будут отключены, но это нужно было сделать вручную.