Как отключить все вкладки на JTabbedPane? - PullRequest
0 голосов
/ 05 августа 2020

На самом деле это вопрос из двух частей.

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:

В сценарии, в котором все вкладки отключены по какой-либо причине, как лучше всего с этим справиться? Я ожидал, что все компоненты на вкладке будут отключены, но это нужно было сделать вручную.

...