powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JTabbedPane
7 сообщений из 7, страница 1 из 1
JTabbedPane
    #33090653
wnoise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, всем известная вещь, что javax.swing.JTabbedPane достаточно глючная вещь, а может кто нибудь знает хороший заменитель этого компонента?
...
Рейтинг: 0 / 0
JTabbedPane
    #33090665
ponomarevvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем глючная? (Я просто интересуюсь, так как сам много с ней не работал).
Может, на SWT тогда вместо Swing перейти?
--С уважением, ponomarevvb--
...
Рейтинг: 0 / 0
JTabbedPane
    #33090684
wnoise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ponomarevvbА чем глючная?
глючность проявляется при динамическом добавлении/удалении закладок. Например видно компонент с закрытой закладки и т.п. У меня есть проявлялось повисание при удалении закладки - при этом я был в EventDispatchThread.
...
Рейтинг: 0 / 0
JTabbedPane
    #33090727
ponomarevvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А точно в JTabbedPane проблема? Просто с трудом верится, что такие тяжёлые глюки не исправлены с момента появления Swing…
Вот я для примера попробовал, как он себя ведёт - вроде не глючит:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
 import  java.awt.*;
 import  java.awt.event.*;

 import  javax.swing.*;

 public   class  TabTest  extends  JFrame
{
	 private   int  i =  0 ;
	 public  TabTest()
	{
		 super ("Tab Test");

		 final  JTabbedPane tabPane =  new  JTabbedPane();
		tabPane.addTab("1",  new  JButton("1"));

		JPanel panel =  new  JPanel();
		panel.add( new  JLabel("For second tab"));
		panel.add(BorderLayout.SOUTH,  new  JButton("2"));
		tabPane.addTab("2", panel);

		JButton b =  new  JButton("Add tab");
		getContentPane().add(BorderLayout.CENTER, tabPane);
		getContentPane().add(BorderLayout.SOUTH, b);

		b.addActionListener(
			 new  ActionListener()
			{
				 public   void  actionPerformed(ActionEvent e)
				{
					tabPane.addTab("" + ++i,  new  JButton("" + i));
				}
			}
		);
		pack();
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	 public   static   void  main(String[] args)
	{
		 new  TabTest().show();
	}
}
--С уважением, ponomarevvb--
...
Рейтинг: 0 / 0
JTabbedPane
    #33090750
wnoise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну прежде всего в примере я не увидел удаления закладок, а кроме этого глюки проявляются не постоянно, а от случая к случаю - очевидно есть какие то там гонки. кстати я не встречал SWT - что это?
...
Рейтинг: 0 / 0
JTabbedPane
    #33090835
ponomarevvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня корректно удаляется страница даже в том случае, если она является активной:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
 import  java.awt.*;
 import  java.awt.event.*;

 import  javax.swing.*;

 public   class  TabTest  extends  JFrame
{
	 private   int  i =  1 ;
	 public  TabTest()
	{
		 super ("Tab Test");

		 final  JTabbedPane tabPane =  new  JTabbedPane();
		tabPane.addTab("1",  new  JButton("1"));

		JPanel panel =  new  JPanel();
		panel.add( new  JLabel("For second tab"));
		panel.add(BorderLayout.SOUTH,  new  JButton("2"));
		tabPane.addTab("2", panel);

		JButton bAdd =  new  JButton("Add tab");
		JButton bDelete =  new  JButton("Delete tab");
		getContentPane().add(BorderLayout.CENTER, tabPane);
		getContentPane().add(BorderLayout.SOUTH, bAdd);
		getContentPane().add(BorderLayout.NORTH, bDelete);

		bAdd.addActionListener(
			 new  ActionListener()
			{
				 public   void  actionPerformed(ActionEvent e)
				{
					tabPane.addTab("" + ++i,  new  JButton("" + i));
				}
			}
		);

		bDelete.addActionListener(
			 new  ActionListener()
			{
				 public   void  actionPerformed(ActionEvent e)
				{
					tabPane.remove(i--);
				}
			}
		);
		pack();
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	 public   static   void  main(String[] args)
	{
		 new  TabTest().show();
	}
}
Я всё равно сомневаюсь, что в JTabbedPane присутствуют такие явные глюки…
Но если хотите посмотреть SWT - это IBM'овская библиотека, альтернативная Swing. Вроде Eclipse на ней написан. Ссылку дать не могу, но Google, наверное, найдёт.
--С уважением, ponomarevvb--
...
Рейтинг: 0 / 0
JTabbedPane
    #33090844
. © .
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ponomarevvbСсылку дать не могу, но Google, наверное, найдёт.
http://www.eclipse.org/swt/
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JTabbedPane
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]