2010-08-16 60 views
39

im tạo mô phỏng vật lý cho vui và tôi đang tìm kiếm hướng dẫn đồ họa khi tôi cố gắng tìm ra sự khác biệt giữa tất cả các J này. ai đó có thể xây dựng trên chúng hoặc có thể cung cấp một liên kết đến một nguồn hữu ích?Sự khác biệt giữa JPanel, JFrame, JComponent và JApplet

Trả lời

5

Bạn có thể thấy hữu ích khi tra cứu các lớp trên oracle. Ví dụ:

http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JFrame.html

Ở đó bạn có thể thấy rằng JFrame kéo dài JComponent và JContainer.

JComponent là một đối tượng cơ bản có thể được rút ra, JContainer mở rộng này để bạn có thể thêm các thành phần vào nó. Cả JPanel và JFrame đều mở rộng JComponent khi bạn có thể thêm vào chúng. JFrame cung cấp một cửa sổ, trong khi JPanel chỉ là một bảng điều khiển nằm bên trong một cửa sổ. Nếu điều đó hợp lý.

+3

Như một lưu ý phụ, chuỗi kế thừa là vô lý với một số thành phần Swing. Nó có xu hướng làm cho việc hoàn thành mã trong các IDE trở nên vô dụng cũng như làm lộn xộn các javadocs. Họ thực sự cần phải viết lại điều đó – TheLQ

+1

Tôi muốn chỉ ra rằng JFrame không mở rộng JComponent hoặc JContainer, mà là java.awt.Container và java.awt.Component theo thứ tự đó. –

+1

@LucasMorgan Họ phải làm JFrame ít phụ thuộc vào Swing hơn tôi nghĩ. Kể từ khi nó sử dụng AWT, tôi tự hỏi nếu bạn có thể sử dụng một JFrame trong một JApplet. –

17

JFrame và JApplet là các vùng chứa cấp cao nhất. Nếu bạn whish để tạo ra ứng dụng máy tính để bàn, bạn sẽ sử dụng JFrame và nếu bạn dự định lưu trữ ứng dụng của mình trong trình duyệt, bạn sẽ sử dụng JApplet.

JComponent là lớp trừu tượng cho tất cả các sản phẩm Swing và bạn có thể sử dụng nó làm lớp cơ sở cho thành phần mới của bạn. JPanel là compoent có thể sử dụng đơn giản mà bạn có thể sử dụng cho hầu hết mọi thứ.

Vì đây là dự án thú vị, cách đơn giản nhất cho bạn là làm việc với JPanel và sau đó lưu trữ nó bên trong JFrame hoặc JApplet. Netbeans có thiết kế trực quan cho Swing với các ví dụ đơn giản.

38

Các lớp đó là các điểm mở rộng phổ biến cho thiết kế giao diện người dùng Java. Trước hết, nhận ra rằng họ không nhất thiết phải làm nhiều việc trực tiếp với nhau, vì vậy cố gắng tìm một mối quan hệ giữa họ có thể phản tác dụng.

JApplet - Lớp cơ sở cho phép bạn viết mã sẽ chạy trong ngữ cảnh của trình duyệt, như cho trang web tương tác. Điều này là mát mẻ và tất cả, nhưng nó mang lại những hạn chế đó là giá cho nó chơi tốt đẹp trong thế giới thực. Thông thường JApplet được sử dụng khi bạn muốn có giao diện người dùng của riêng bạn trong một trang web. Tôi đã luôn luôn tự hỏi tại sao mọi người không tận dụng lợi thế của các applet để lưu trữ nhà nước cho một phiên vì vậy không có cơ sở dữ liệu hoặc cookie là cần thiết.

JComponent - Lớp cơ sở cho các đối tượng có ý định tương tác với Swing.

JFrame - Được sử dụng để đại diện cho nội dung mà cửa sổ cần có. Điều này bao gồm biên giới (có thể thay đổi y/n?), Thanh tiêu đề (tên ứng dụng hoặc tin nhắn khác), điều khiển (giảm thiểu/tối đa cho phép?) Và xử lý sự kiện cho các sự kiện hệ thống khác nhau như 'đóng cửa sổ' (cho phép ứng dụng thoát chưa?).

JPanel - Lớp chung được sử dụng để thu thập các phần tử khác lại với nhau. Điều này quan trọng hơn khi làm việc với bố cục trực quan hoặc một trong các trình quản lý bố cục được cung cấp, ví dụ: gridbaglayout, v.v. Ví dụ, bạn có một hộp văn bản lớn hơn khu vực bạn đã đặt trước. Đặt hộp văn bản trong ngăn cuộn và đặt ngăn đó vào một JPanel. Sau đó, khi bạn đặt JPanel, nó sẽ dễ quản lý hơn về bố cục.

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