JFrameの一部ですべてのペイントと更新を完全に無効にしようとしています。public void paint(Graphics)
次のようにオーバーライドするだけで、JFrame全体に目的の効果が得られました。
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 () {}
}
また、次の方法で更新を無効にしてみました。
DontRefresh component = new DontRefresh();
RepaintManager.currentManager(component).markCompletelyClean(component);
しかし、何も機能しませんでした。