私は1つのパネルを含むJFrameを持っています。 パネルでは、paintComponentメソッドを使用して、Jframeのサイズに従って要素のサイズを変更します。 JPanelの要素は、背景としてのイメージと、4つのImageIconとボタンのように機能する4つのJLabelです。私のguiが実行時に多すぎるリソースを取っています
public class MyPanel extends JPanel
{
//Declarations
private BufferedImage backGround;
public MyPanel()
{
//Some code here
}
public void paintComponent(Graphics graphics)
{
super.paintComponent(graphics);
Graphics2D graphics2d = (Graphics2D) graphics;
if(backGround != null)
{
graphics2d.drawImage(backGround, 0, 0, getWidth(), getHeight(), this);
}
/* This code is repeated 4 times because I have 4 labels */
label1.setSize(getWidth()/7 , getHeight()/10);
label1.setLocation(getWidth()/2 - getWidth()/14 , getHeight()/3);
image1 = button1.getScaledInstance(label1.getWidth(), label1.getHeight(),
Image.SCALE_SMOOTH);
label1.setIcon(new ImageIcon(image1));
}
}
の下枠はので、私はそれをここに書いていないだけの簡単な方法を持っている、(myPanel)を追加するようにJPanelの方法paintComponentです。 私はアプリケーションを実行すると、それは私にとってはまったく当たり前のCPUの量(特にInter Core i5-6200U)の約30%のRAMと約300 MBのRAMを必要とします。何が私のアプリケーションに非常に多くのリソースを必要としているのですか?それを減らす方法はありますか?
backGroundとは何ですか?どこでも宣言されていない – Maaaatt
私は宣言の部分をコメントしました。それは質問のポイントではありません –
'label1'、' 'image1'、' button1'は何ですか? JPanelとの関係はどうですか? 'paintComponent'は' painting'の必要性があるたびに呼び出され、それぞれの絵にリソースを再作成していることを思い出してください。リサイズイベントをキャプチャし、そのような場合にのみリソースを作成することを推奨します。 –