Apabila cuba menangkap imej data jadual menggunakan API Java, pengepala JTable mungkin hilang daripada PNG yang ditulis oleh kod itu. Ini kerana pada masa mengecat panel pada imej, pengepala bukan lagi sebahagian daripada hierarki. Untuk menyelesaikan isu ini, kaedah addNotify boleh dipanggil pada pengepala untuk menambahkannya kembali pada hierarki.
import com.tips4java.screenimage.ScreenImage; ... // Get the table JTable table = ti.getTable(); // Create a JScrollPane and add the table to it JScrollPane scroll = new JScrollPane(table); // Add the header to the scroll pane scroll.setColumnHeaderView(table.getTableHeader()); // Set the preferred viewport size so the scroll pane doesn't affect the size table.setPreferredScrollableViewportSize(table.getPreferredSize()); // Create a panel and add the scroll pane to it JPanel p = new JPanel(new BorderLayout()); p.add(scroll, BorderLayout.CENTER); // Create the image from the panel using ScreenImage BufferedImage bi = ScreenImage.createImage(p);
import javax.swing.*; ... // Get the table JTable table = ti.getTable(); // Create a JScrollPane and add the table to it JScrollPane scroll = new JScrollPane(table); // Set the preferred viewport size so the scroll pane doesn't affect the size table.setPreferredScrollableViewportSize(table.getPreferredSize()); // Create a panel and add the scroll pane to it JPanel p = new JPanel(new BorderLayout()); p.add(scroll, BorderLayout.CENTER); // Fake having been shown to force layout p.addNotify(); // Set the panel size to its preferred size p.setSize(p.getPreferredSize()); // Validate to force recursive layout of children p.validate(); // Create the image from the panel BufferedImage bi = new BufferedImage(p.getWidth(), p.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics g = bi.createGraphics(); p.paint(g);
Kedua-dua strategi berkesan menjadikan pengepala jadual dalam imej yang ditangkap, sambil mengekalkan saiz jadual seperti yang dimaksudkan. Pilihan antara dua pendekatan bergantung pada keperluan khusus aplikasi.
Atas ialah kandungan terperinci Mengapa Pengepala JTable Saya Hilang Apabila Menangkap Imej?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!