2009-04-08 48 views
6

có cách nào để thêm JMenuItem vào JPanel để tôi có thể tạo nút để hiển thị nhiều tùy chọn, như nút tin tức mới nhất trong firefox, dưới thanh địa chỉ không?Java: Làm cách nào để thêm JMenu vào JPanel hoặc tạo nút thả xuống?

Tôi chỉ có thể thêm JMenu và JMenuItems đến một JMenuBar, JPopupMenu và JMenus khác và JMenuitems

Có cách nào để tạo ra trong Java Swing một thả xuống JButton? (Là những người có một mũi tên chỉ xuống ở bên trái của họ trong đó cho thấy thêm nhiều lựa chọn cho người sử dụng)

Cảm ơn trước

+0

Cảm ơn bạn đã phản hồi. Nếu bạn có một mã minh họa cho giải pháp của bạn, có thể sẽ thú vị khi xuất bản câu trả lời (và chọn mục nhập của riêng bạn làm câu trả lời chính thức nếu bạn muốn) – VonC

+0

thx, tôi đã làm, nhưng tôi phải đợi 48 giờ để bình chọn answer – Telcontar

Trả lời

5

finnally tôi thực hiện "nút show options" với một Jutton đơn giản, và một JPopupPane với các tùy chọn để hiển thị:

Trong ActionPerformedListener của nút i viết mã này:

popMenu.show(showOptionsButton,0,showOptionsButton.getHeight()) 

Nó hoạt động tốt như JMenu trong JMenuBar, nhưng không chính xác giống như nút thả xuống, trong đó bạn có thể thực hiện thao tác nhấn nút hoặc hiển thị thêm thao tác nhấn mũi tên xuống. Tôi tin rằng điều này có thể được thực hiện bằng cách sử dụng hai nút "rất gần", sau đó sử dụng mã ở trên trong nút mũi tên, nhưng đặt "nút hành động" làm thành phần của cửa sổ bật lên, sao cho cửa sổ bật lên hiển thị bên dưới cả hai nút.

+0

Cảm ơn bạn đã phản hồi. +1 – VonC

3

Một JMenuBar chỉ nên được thêm vào một JFrame (setMenuBar()), không phải là một JPanel.

Nút thả xuống của Swing là cách để đến đây.

Xem article này cho một cuộc thảo luận tốt về mệnh đề thi khác nhau

alt text http://blogs.sun.com/geertjan/resource/dropdownbutton1-jl.png

Nút thả xuống ở trên sử dụng NetBeans UI Utilities API (platform7/modules/org-openide-awt.jar trong bất kỳ phân phối của NetBeans IDE). Bạn không cần phải có NetBeans để chạy nó: chỉ jar này bạn đã trích xuất từ ​​cài đặt NetBeans.

+0

Nó hoạt động nhưng tôi không sử dụng nó để không phụ thuộc vào một jar bên ngoài trong ứng dụng, được phân phối bởi JavaWebStart. Tôi làm điều đó bằng cách hiển thị một popmenu trên điểm 0, comp.getHeight() của nút – Telcontar

Các vấn đề liên quan