ホームページ >Java >&#&チュートリアル >画像をキャプチャすると JTable ヘッダーが消えるのはなぜですか?

画像をキャプチャすると JTable ヘッダーが消えるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-06 07:45:021018ブラウズ

Why Does My JTable Header Disappear When Capturing an Image?

画像に JTable ヘッダーが見つからないのはなぜですか?

Java API を使用して表形式データの画像をキャプチャしようとすると、JTable ヘッダーが PNG から消える場合がありますコードが書くこと。これは、パネルを画像にペイントする時点で、ヘッダーが階層の一部ではなくなるためです。この問題を解決するには、ヘッダーで addNotify メソッドを呼び出してヘッダーを階層に追加します。

解決策 1: ScreenImage クラスを使用する (戦略 1)

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

解決策 2:手動によるサイズ変更と検証 (戦略 2)

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

どちらの戦略でも、テーブルのサイズを意図したとおりに保ちながら、キャプチャされたイメージにテーブル ヘッダーを効果的にレンダリングします。 2 つのアプローチのどちらを選択するかは、アプリケーションの特定の要件によって異なります。

以上が画像をキャプチャすると JTable ヘッダーが消えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。