Xin chào, tôi muốn chuyển đổi bảng điều khiển chứa các thành phần như nhãn và nút vào tệp hình ảnh.cách lưu bảng điều khiển dưới dạng hình ảnh trong xoay?
Tôi đã thực hiện mã sau đây. Hình ảnh đã được lưu. nhưng nội dung của bảng điều khiển không hiển thị hoặc được lưu. Bất cứ ai có thể cho tôi biết làm thế nào để lưu bảng điều khiển với các thành phần của nó.
Code:
package PanelToImage;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.*;
public class sample extends JPanel {
public JPanel firstpanel;
public JPanel secondpanel;
JLabel label1, label2;
JButton button1, button2;
public sample() {
firstpanel = new JPanel();
firstpanel.setSize(400,300);
firstpanel.setBackground(Color.RED);
secondpanel = new JPanel();
secondpanel.setBackground(Color.GREEN);
secondpanel.setSize(400,300);
label1 = new JLabel("label1");
label2 = new JLabel("label2");
button1 = new JButton("button1");
button2 = new JButton("button2");
firstpanel.add(label1);
firstpanel.add(button1);
secondpanel.add(label2);
secondpanel.add(button2);
saveImage(firstpanel);
add(firstpanel);
// add(secondpanel);
}
public static void main(String args[]) {
JFrame frame = new JFrame();
sample sam = new sample();
frame.setContentPane(sam);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
}
private void saveImage(JPanel panel) {
BufferedImage img = new BufferedImage(panel.getWidth(), panel.getHeight(), BufferedImage.TYPE_INT_RGB);
panel.paint(img.getGraphics());
try {
ImageIO.write(img, "png", new File("E://Screen.png"));
System.out.println("panel saved as image");
} catch (Exception e) {
System.out.println("panel not saved" + e.getMessage());
}
}
}
Xem [ComponentImageCapture.java] (http://stackoverflow.com/a/5853992/418556) để hiển thị các thành phần hiển thị - cuộn xuống để xem ** Xem thêm ** & Lớp A của Rob Camick rất nhiều công việc grunt trong việc chụp ảnh từ một thành phần chưa được hiển thị. Và một số thủ thuật khác để hiển thị các thành phần trước khi hiển thị có thể được nhìn thấy trong [Tại sao tiêu đề JTable không xuất hiện trong hình ảnh?] (Http://stackoverflow.com/q/7369814/418556) –
Dường như với tôi bạn là cung cấp sai 'Đường dẫn' cho tệp được tạo. Vì chương trình của bạn không biết gì về 'Drive E', nên' File' mới sẽ được tạo ra phải được tham chiếu với 'Relative Path' liên quan đến' .class File', như '.. \. \ E: \ Screen.png', làm cho nó đi hai cấp độ và sau đó tiếp cận cho 'Drive E', một cái gì đó như thế này sẽ làm việc. Hình ảnh được tạo ra với câu trả lời của tôi hoặc câu trả lời của @Alberto được tạo bên cạnh tệp .class. –