Rumah  >  Artikel  >  Java  >  Mengapakah pengepala JTable hilang apabila menangkap imej dalam JOptionPane?

Mengapakah pengepala JTable hilang apabila menangkap imej dalam JOptionPane?

Patricia Arquette
Patricia Arquetteasal
2024-11-06 13:34:02300semak imbas

Why does the JTable header disappear when capturing an image in a JOptionPane?

Mengapakah pengepala JTable tidak muncul dalam imej?

Apabila menangkap imej data jadual menggunakan perpustakaan Java swing, mungkin terdapat menjadi isu di mana pengepala jadual tidak muncul dalam imej yang terhasil. Ini berlaku kerana apabila jadual ditambahkan pada JScrollPane dan ditunjukkan dalam anak tetingkap pilihan, pengepala jadual tidak lagi menjadi sebahagian daripada hierarki pepohon apabila imej ditangkap.

Penyelesaiannya ialah menambah pengepala jadual kembali. kepada hierarki sebelum menangkap imej. Ini boleh dilakukan menggunakan kaedah addNotify(), seperti yang ditunjukkan di bawah:

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();

Dengan menambahkan pengepala jadual kembali ke hierarki menggunakan addNotify() dan melakukan susun atur, pengepala akan kelihatan apabila imej ditangkap.

Atas ialah kandungan terperinci Mengapakah pengepala JTable hilang apabila menangkap imej dalam JOptionPane?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn