JFrameの一部ですべてのペイントとリフレッシュを完全に無効にしようとしています。私は単純にそうようなpublic void paint(Graphics)
をオーバーライドすることで全体のJFrameに所望の効果を得ました:JPanelでペイントを無効にする
import javax.swing.*;
class Test extends JFrame {
Test() {
setBounds(20,20, 100,100);
setVisible(true);
}
//This disables all painting and refreshing ON A JFRAME.
//Just doing this on a JPanel doesn't work.
public void paint (Graphics g) {}
public static void main (String[] args)
{ new Test(); }
}
私はこれと同じ効果をしたいが、唯一のJFrameの特定の領域に。私はフレームの残りの部分に通常のようなGUIコンポーネントを追加できるようにしたい。私はダブルバッファリング(JPanelののコンストラクタを使用して)、次のメソッドをオーバーライドを無効にすることを試みたので、同様に(JPanelのとJComponentの両方を拡張する):
public class DontRefresh extends JComponent/JPanel {
public void paint (Graphics g) {}
public void paintComponent (Graphics g) {}
public void repaint() {}
public void update (Graphics g) {}
public void updateUI() {}
}
とiも経由してリフレッシュを無効にすることを試みた:
DontRefresh component = new DontRefresh();
RepaintManager.currentManager(component).markCompletelyClean(component);
が、何も働かなかった。
あなたが望む効果は実際には正確ではありません。ペイント不可能なJPanelに何が表示されるべきかを教えてください:透明であるか固定カラーであるべきですか?最初のケースでは単にsetOpaqueをfalseに設定します。後者では、単に背景に必要な色を塗りつぶします。 –
*「JFrameの一部ですべてのペイントとリフレッシュを完全に無効にしようとしています。」*意図的にGUIを破棄しようとしていますか?その機能は何を提供しますか? –