レンダリングされた JTable イメージのテーブル ヘッダーをキャプチャするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-07 18:04:02
オリジナル
657 人が閲覧しました

How to Capture the Table Header in a Rendered JTable Image?

レンダリングされたイメージの JTable ヘッダーのキャプチャ

問題:

JTable のイメージをキャプチャすると、テーブル ヘッダーが結果のイメージには表示されません。

原因:

パネルがイメージに描画される時点では、JTable ヘッダーは階層の一部ではありません。 JOptionPane が閉じられたときに削除されました。

kleopatra の解決策:

  1. p.addNotify(); を追加します。 BufferedImage を作成してヘッダーを階層に追加する前に。
  2. p.validate(); でパネルを検証します。すべてのコンテナの再帰的再レイアウトを強制し、コンテナにピアがあると認識させます。

camiccr の解決策:

  1. ScreenImage を使用します。 createImage(p);画像をキャプチャし、ヘッダーの削除と追加を処理します。
  2. このメソッドを使用する場合は、 table.setPreferredScrollableViewportSize(table.getPreferredSize()); を設定します。 JScrollPane がレンダリングを妨げないようにします。

更新されたコード:

...
// Without having been shown, fake a all-ready
p.addNotify();

// Manually size to preferred
p.setSize(p.getPreferredSize());

// Validate to force recursive doLayout of children
p.validate();

BufferedImage bi = new BufferedImage(p.getWidth(), p.getHeight(), BufferedImage.TYPE_INT_RGB);

Graphics g = bi.createGraphics();
p.paint(g);
g.dispose();
...
ログイン後にコピー

結論:

どちらのソリューションも、結果として得られるイメージに JTable ヘッダーを効果的にレンダリングします。 kleopatra のソリューションはコア J2SE を利用していますが、camiccr のソリューションは追加機能のために ScreenImage API を利用しています。選択はアプリケーションの特定の要件によって異なります。

以上がレンダリングされた JTable イメージのテーブル ヘッダーをキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート