Beim Versuch, ein Bild von Tabellendaten mithilfe der Java-API zu erfassen, verschwindet der JTable-Header möglicherweise aus dem PNG dass der Code schreibt. Dies liegt daran, dass die Kopfzeile zum Zeitpunkt des Anbringens des Panels an das Bild nicht mehr Teil der Hierarchie ist. Um dieses Problem zu beheben, kann die addNotify-Methode für den Header aufgerufen werden, um ihn wieder zur Hierarchie hinzuzufügen.
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);
Beide Strategien rendern effektiv den Tabellenkopf im erfassten Bild, während die Tabellengröße wie beabsichtigt beibehalten wird. Die Wahl zwischen den beiden Ansätzen hängt von den spezifischen Anforderungen der Anwendung ab.
Das obige ist der detaillierte Inhalt vonWarum verschwindet mein JTable-Header beim Aufnehmen eines Bildes?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!