2010-09-21 37 views
5

Tóm lại, nhu cầu của tôi là có một hình nền trong ứng dụng java của tôi, và khi một số sự kiện, hãy tạo một số đồ họa khác trên đầu hình ảnh đó.Java - kiểm soát thứ tự Z của JPanels

Tôi đã nghĩ tôi sẽ sử dụng JPanel để vẽ hình nền, thêm nó vào JFrame của tôi khi bắt đầu chương trình, sau đó thêm các JPanels khác lên trên các sự kiện nhất định. Vấn đề là Swing cung cấp cho JPanels thêm đầu tiên chỉ số Z cao nhất, vì vậy nền tảng của tôi sẽ hiển thị trên đầu trang của tất cả mọi thứ.

Có cách nào để kiểm soát chỉ mục/thứ tự Z của JPanels hay không, tôi có hoàn toàn sai về điều này không?

Trả lời

2

Âm thanh lạ để thêm mutiple JPanels và sử dụng z-trật tự. Tôi sẽ đề nghị bạn hoặc đơn giản thêm MỘT JPanel với phương thức paintComponent (Graphics g) được ghi đè, nơi bạn vẽ đúng hình ảnh theo sự kiện của bạn.

Hoặc sử dụng CardLayout, và thêm JLabels (với hình ảnh khác nhau), sau đó khi sự kiện của bạn gây ra, sử dụng

CardLayout cl = (CardLayout)getLayout(); 
cl.show(this, "card3"); 

để hiển thị các JLabel đúng.

1

Tôi đã suy nghĩ tôi sẽ sử dụng một JPanel để vẽ hình nền trong, thêm nó tại để JFrame tôi bắt đầu chương trình,

Âm thanh lý.

và sau đó thêm JPanels khác trên đầu trang của rằng khi sự kiện nhất định. Vấn đề là Swing cung cấp cho JPanels thêm chỉ số Z cao nhất đầu tiên, vì vậy cần nền của tôi hiển thị trên đầu trang của mọi thứ.

Việc thêm bảng điều khiển vào bảng điều khiển cũng giống như thêm thành phần khác vào bảng điều khiển. Thành phần con sẽ được vẽ trên đầu bảng điều khiển chính. Không cần phải chơi đùa với Z-Order.

Điều quan trọng là đặt trình quản lý bố cục trên bảng điều khiển bằng hình ảnh. Sau đó, mỗi bảng điều khiển bạn thêm vào bảng điều khiển hình ảnh phải được làm không mờ đục để hình nền sẽ được vẽ.

Có thể Background Panel có thể giúp bạn. Nó tự động làm cho bất kỳ thành phần nào được thêm trực tiếp vào bảng điều khiển không mờ đục.

2

JLayeredPane được thiết kế chỉ cho mục đích này. Nó cho phép bạn kiểm soát thứ tự Z của các thành phần.

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