|
|
|
динамическое создание gобьектов интерфейса пользователя
|
|||
|---|---|---|---|
|
#18+
неполучается динамически создать обьект и поставить его на форму. package boxaddtest; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Main extends JFrame{ public Main() { JButton button = new JButton(); button.setText("first"); button.setAction(new StrasnijAction()); panel = new JPanel(); panel.add(button); Container contentPane = getContentPane(); contentPane.add(panel, BorderLayout.CENTER); } public static void main(String[] args) { // TODO code application logic here Main frame = new Main(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); } public class StrasnijAction extends AbstractAction { public StrasnijAction(){ putValue(Action.NAME,"Exit"); putValue(Action.SHORT_DESCRIPTION,"Exit Application"); } public void actionPerformed(ActionEvent event ){ JButton button = new JButton(); button.setText("Second"); panel.add(button); } } private JPanel panel; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 21:33:18 |
|
||
|
динамическое создание gобьектов интерфейса пользователя
|
|||
|---|---|---|---|
|
#18+
Код: 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. Несколько замечаний по примеру выше. 1. В браузере всегда код ставить внутри тегов SRC. 2. "extend JFrame" рекомендуется только в случае, если используются override методы. Вообще, наследовать любой класс рекомендуется только в случае, если используется расширение функционала, либо надо добраться до protected методов или переменных родителя, либо надо переписать поведение. Так как ни одного из этих событий у нас в программе нет, наследовать Main от JFrame нет никакого смысла, и даже вредно. 3. По возможности, все вызовы при работе со Свингом надо делать через SwingUtilities.invokeLater или .invokeAndWait, ибо, как известно Swing не thread-safe. Его можно не использовать, когда идет вызов метода из Свинга, как у меня, когда вызывается actionPerformed, но даже тогда, я проверил, что jp.revalidate находится в треде свинга через SwigUtilities.isDispatchingThread() (какову проверку потом удалил) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2007, 16:03:22 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34836004&tid=2144492]: |
0ms |
get settings: |
19ms |
get forum list: |
28ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
45ms |
get topic data: |
19ms |
get forum data: |
5ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 360ms |
| total: | 574ms |

| 0 / 0 |
