2010-01-17 42 views
6

Xin lỗi cho câu hỏi thực sự đơn giản, nhưng tôi đã không thể tìm thấy bất cứ điều gì trong mạng, có lẽ bởi vì tôi không biết các điều khoản thích hợp để tìm kiếm.Java swing "trẻ em" windows

Khi bạn có ứng dụng dành cho máy tính để bàn, có rất nhiều cửa sổ được gọi là trẻ em: một cho các tùy chọn, một cho "về" và v.v. Làm thế nào để làm cho chúng trong Java Swing (với các công cụ NetBeans - tùy chọn)?

Cho đến nay tôi vừa tạo một JFrame khác và trên sự kiện có liên quan đã mở nó theo cùng một cách Chức năng chính khởi chạy, tốt, chính là JFrame. Nhưng có một cái gì đó sai với phương pháp này: khi tôi đóng cửa sổ con thông qua x ở góc trên bên phải, toàn bộ chương trình chấm dứt như thể tôi đã đóng cửa sổ chính. Điều này có lẽ vì NetBeans tự động tạo mã cho x và tôi có thể tìm và thay đổi nó ở đâu đó ... nhưng tôi vẫn có cảm giác rằng phải có cách đơn giản hơn để thêm JFrames cho trẻ em (hoặc JPanels hoặc bất kỳ thứ gì cho cửa sổ con) ;)

Trả lời

9

... Nhưng có điều gì đó sai trái với phương pháp này: khi tôi đóng cửa sổ con qua x ở góc trên bên phải, toàn bộ chương trình chấm dứt như thể tôi đã đóng cửa sổ chính. ...

Vâng, tôi sẽ nói bạn đang đi đúng hướng. Chỉ cần đảm bảo rằng bạn làm như sau cho khung con của mình:

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

Sau đó đóng cửa sổ con sẽ không tắt toàn bộ ứng dụng của bạn.

HTH! ;-)

3

bạn có nghĩa là một cửa sổ Dialog (xem How to Make Dialogs) mà bạn có thể muốn trở thành modal để chặn đầu vào sử dụng cho tất cả các cửa sổ khác trong chương trình (xem An Overview of Dialogs)?

+0

Không chính xác. Tôi có nghĩa là một cái gì đó giống như cửa sổ Tùy chọn. I E. Cửa sổ Tùy chọn Firefox. Trừ khi nó được gọi là cửa sổ hộp thoại quá. – Sejanus

1

Chuyển đến chế độ thiết kế khung -> chọn khung của bạn -> trong thuộc tính, tùy chọn nắm tay. Chọn Dispose on close.

Nếu bạn không nhìn thấy các đạo cụ: trẻ em Ctrl + Shift + 7 hoặc Window (in the frame menu) -> Properties

1

Nếu bạn tạo khung, họ không được coi là cửa sổ. Bạn không thể thiết lập một chủ sở hữu cho họ như bạn có thể một JDialog. Nếu bạn đã muốn tạo một JFrame, sau đó bạn sẽ phải thiết lập các hoạt động gần

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

thay vì

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

Các hoạt động EXIT_ON_CLOSE sẽ gọi System.exit (0); sẽ chấm dứt JVM. Chỉ cần nhớ rằng nếu JFrame chính của bạn được đặt thành DISPOSE_ON_CLOSE thì bạn phải đảm bảo rằng tất cả các khung hình khác của bạn đã được xử lý đúng cách, nếu không, khung hình sẽ không thoát ra cho đến khi chúng được bật.

+0

Cảm ơn tất cả các bạn;) Quá tệ Tôi không thể chính thức chấp nhận nhiều câu trả lời, tất cả đều hữu ích :) – Sejanus

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