Warum erscheint der JTable-Header nicht im Bild?
Beim Erfassen eines Bildes von Tabellendaten mit der Java-Swing-Bibliothek kann es sein, dass dies der Fall ist Es kann zu einem Problem kommen, bei dem der Tabellenkopf nicht im resultierenden Bild erscheint. Dies liegt daran, dass, wenn die Tabelle zu einem JScrollPane hinzugefügt und in einem Optionsbereich angezeigt wird, der Tabellenkopf nicht mehr Teil der Baumhierarchie ist, wenn das Bild erfasst wird.
Die Lösung besteht darin, den Tabellenkopf wieder hinzuzufügen in die Hierarchie einfügen, bevor Sie das Bild aufnehmen. Dies kann mit der Methode addNotify() erfolgen, wie unten gezeigt:
JTable table = new JTable(); JScrollPane scroll = new JScrollPane(table); JPanel p = new JPanel(new BorderLayout()); p.add(scroll, BorderLayout.CENTER); JOptionPane.showMessageDialog(null, p); table.addNotify(); p.doLayout(); BufferedImage bi = new BufferedImage(p.getWidth(), p.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics g = bi.createGraphics(); p.paint(g); g.dispose();
Indem Sie den Tabellenkopf mit addNotify() wieder zur Hierarchie hinzufügen und ein Layout erstellen, wird der Kopf sichtbar, wenn das Bild angezeigt wird wird erfasst.
Das obige ist der detaillierte Inhalt vonWarum verschwindet der JTable-Header, wenn ein Bild in einem JOptionPane erfasst wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!