Có phương pháp nào để đặt hình ảnh làm nền trong JFrame
không?Đặt hình nền trong JFrame
Trả lời
Không có phương thức tích hợp sẵn, nhưng có một số cách để thực hiện. Cách đơn giản nhất mà tôi có thể nghĩ đến vào lúc này là:
- Tạo phân lớp
JComponent
. - Ghi đè phương thức
paintComponent(Graphics g)
để vẽ hình ảnh mà bạn muốn hiển thị. - Set the content pane của số
JFrame
làm lớp con này.
Một số mẫu mã:
class ImagePanel extends JComponent {
private Image image;
public ImagePanel(Image image) {
this.image = image;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
}
}
// elsewhere
BufferedImage myImage = ImageIO.read(...);
JFrame myJFrame = new JFrame("Image pane");
myJFrame.setContentPane(new ImagePanel(myImage));
Lưu ý rằng mã này không xử lý thay đổi kích thước hình ảnh để phù hợp với JFrame
, nếu đó là những gì bạn muốn.
Hãy thử điều này:
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Test {
public static void main(String[] args) {
JFrame f = new JFrame();
try {
f.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("test.jpg")))));
} catch (IOException e) {
e.printStackTrace();
}
f.pack();
f.setVisible(true);
}
}
Bằng cách này, điều này sẽ dẫn đến khung nội dung không phải là một container. Nếu bạn muốn thêm mọi thứ vào nó, bạn phải phân lớp một JPanel và ghi đè lên phương thức paintComponent.
Thực ra, JLabel (giống như tất cả JComponents) mở rộng Container. Tôi tự hỏi điều gì xảy ra nếu bạn thêm thứ gì đó vào một nhãn? –
thực sự không có gì ... tôi chỉ thử nó. bạn có thể thêm một JTextArea ví dụ nhưng nó không vẽ. –
Không có gì xuất hiện vì nhãn có bố cục rỗng. Đặt trình quản lý bố cục của nhãn và bạn có thể thêm các thành phần vào nhãn đó. Chỉ cần lưu ý rằng kích thước của thành phần sẽ vẫn được xác định bởi kích thước của hình ảnh, chứ không phải các thành phần được thêm vào nhãn. – camickr
Bạn có thể sử dụng lớp Background Panel. Nó làm các bức tranh tùy chỉnh như đã giải thích ở trên nhưng cung cấp cho bạn các tùy chọn để hiển thị hình ảnh thu nhỏ, lát gạch hoặc kích thước bình thường. Nó cũng giải thích cách bạn có thể sử dụng một JLabel với một hình ảnh làm khung nội dung cho khung.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class BackgroundImageJFrame extends JFrame
{
JButton b1;
JLabel l1;
public BackgroundImageJFrame() {
setSize(400,400);
setVisible(true);
setLayout(new BorderLayout());
JLabel background=new JLabel(new ImageIcon("C:\\Users\\Computer\\Downloads\\colorful_design.png"));
add(background);
background.setLayout(new FlowLayout());
l1=new JLabel("Here is a button");
b1=new JButton("I am a button");
background.add(l1);
background.add(b1);
}
public static void main(String args[])
{
new BackgroundImageJFrame();
}
}
kiểm tra các liên kết dưới đây
http://java-demos.blogspot.in/2012/09/setting-background-image-in-jframe.html
- 1. Nền JFrame trong suốt
- 2. Đặt JFrame vào giữa màn hình trong NetBeans
- 3. Đặt hình nền Emacs
- 4. Căn giữa hình ảnh trong JFrame?
- 5. Đặt hình nền trong suốt ở IrfanView
- 6. Đặt hình nền trong UIViewController (MonoTouch)
- 7. Đặt hình nền của SurfaceView
- 8. Đặt hình nền thành uitableview?
- 9. Android - Cách đặt hình nền?
- 10. Đặt Màn hình chính Hình nền
- 11. Đặt kích thước của một ContentPane (bên trong JFrame)
- 12. Thêm hình ảnh vào JFrame
- 13. Đặt hình nền trong màn hình chính giả lập
- 14. Phát hiện Nhấp vào nút "Đặt hình nền" trong Bộ chọn hình nền động
- 15. đặt hình nền thành trong suốt trong android
- 16. Hình nền java swing
- 17. Đặt hình nền được tải từ đĩa
- 18. Đặt hình nền 1em từ bên phải?
- 19. Đặt hình nền của cửa sổ OpenGL
- 20. Đặt hình nền trên văn bản?
- 21. Đặt màu nền/hình ảnh cho EKEventEditViewController
- 22. Đặt hình nền cho màu phông chữ?
- 23. JavaFX Cách đặt hình nền của cảnh
- 24. Đặt hình nền trên điều khiển hình ảnh WPF?
- 25. đặt hình ảnh làm nền chân trang trong CSS
- 26. Đặt hoạt động xuất hiện trong 'trình chọn hình nền'
- 27. Đặt hình nền theo lập trình trong A Xib
- 28. đặt hình nền cho toàn bộ ứng dụng trong android
- 29. Làm cách nào để đặt hình nền trong Java?
- 30. Hiển thị JFrame trên một màn hình cụ thể trong cấu hình màn hình kép
Bạn nên sử dụng super.paintComponents() phương pháp để phương pháp painComponent. – Sajad