Swing JTabbedPane: Nur nach ButtonClick und nicht nach Click auf Tab ins nächste Tab wechseln

Skrodde

Aktives Mitglied
Hallo zusammen,
wie kann ich unterbinden, dass bei einem JTabbedPane das Tab angezeigt wird, welches der Nutzer mit der Maus anklickt, bzw. worauf er per Tastatur den Fokus setzt? Hintergrund ist, dass der Nutzer zunächst in dem aktuellen Tab gewisse Eingaben vornehmen muss, bevor er in das nächste Tab wechseln darf. Ich habe hier in der API nachgelesen, aber so weit ich das sehe lässt sich hier nicht, wie bei Button zum Beispiel, ein ActionListener setzen.
Vielen Dank für eure Hilfe, Gruß, Skrodde
 
Du kannst die Tabs eines tabbedPanes enablen oder disablen, dann kann man nicht mehr draufklicken:
Java:
import java.awt.BorderLayout;


public class ButtonTab extends JFrame
{
	
	private JPanel contentPane;
	private JTabbedPane tabbedPane;
	private JPanel panel1;
	private JPanel panel2;
	private JButton btnEnableTab;
	private JLabel lblTab;
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args)
	{
		EventQueue.invokeLater(new Runnable()
			{
				public void run()
				{
					try
					{
						ButtonTab frame = new ButtonTab();
						frame.setVisible(true);
					} catch (Exception e)
					{
						e.printStackTrace();
					}
				}
			});
	}
	
	/**
	 * Create the frame.
	 */
	public ButtonTab()
	{
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		tabbedPane = new JTabbedPane(JTabbedPane.TOP);
		contentPane.add(tabbedPane, BorderLayout.CENTER);
		
		panel1 = new JPanel();
		tabbedPane.addTab("Tab1", null, panel1, null);
		
		btnEnableTab = new JButton("Enable Tab2");
		btnEnableTab.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{
				tabbedPane.setEnabledAt(1, true);
				tabbedPane.setSelectedIndex(1);
			}
		});
		panel1.add(btnEnableTab);
		
		panel2 = new JPanel();
		tabbedPane.addTab("Tab2", null, panel2, null);
		tabbedPane.setEnabledAt(1, false);
		
		lblTab = new JLabel("Tab 2");
		panel2.add(lblTab);
	}
	
}
 

Zurück
Oben