0
2つのオブジェクト(2つのボール)がありますが、2つの異なるJFrameにあります。2つのJFrameの問題
どのように1つのJFrameでそれらを組み合わせることができますか?
私はこのクラスに他のオブジェクトを入れようとしましたが、repaint()
メソッドではいくつかの問題があります。
public class palla extends JFrame implements ActionListener
{
public JPanel contentPane;
private Image bufferVirtuale;
private Graphics offScreen;
private Timer tim = null;
private int xPallina = 0;
private int yPallina = 0;
private int diametroPallina = 40;
private int spostamento = 2;
private int Delay = 10;
private boolean destra,basso;
public palla()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(500, 200, 500, 400);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
destra = true;
basso = true;
tim = new Timer(Delay,this);
tim.start();
}
public void update(Graphics g)
{
paint(g);
}
public void paint(Graphics g)
{
bufferVirtuale = createImage(getWidth(),getHeight());
offScreen = bufferVirtuale.getGraphics();
Graphics2D screen = (Graphics2D) g;
offScreen.setColor(new Color(254,138,22));
offScreen.fillOval(xPallina,yPallina,diametroPallina,diametroPallina);
screen.drawImage(bufferVirtuale,0,0,this);
offScreen.dispose();
}
public void actionPerformed(ActionEvent e)
{
if(basso)
{
if(yPallina > (this.getHeight()-45))
{
basso = false;
yPallina -= spostamento;
}
else
{
yPallina += spostamento;
}
}
else
{
if(yPallina < 25)
{
basso = true;
yPallina += spostamento;
}
else
{
yPallina -= spostamento;
}
}
//il controllo differente avviene a differenza del pannello server,se la pallina colpisce il margine destro. Mentre nel
//pannello server se la pallina colpiva il margine destro avveniva il trasferimento,qui invece la pallina deve rimbalzare
if(!destra)//perciò se la pallina va verso sinistra
{
if(xPallina < 5)//se la pallina raggiunge il margine sinistro e arrivo comunicato è falso
{
destra = true;
xPallina += spostamento;
}
else//se invece la pallina sta andando verso sinistra ma ancora non ha colpito il margine
{
xPallina -= spostamento;//viene diminuita la sua posizione di "spostamento"-pixel
if(xPallina < 0)//se però raggiunge il margine sinistro
{
destra = true;
xPallina += spostamento;
}
}
}
else//se invece la pallina va a destra
{
if(xPallina > (this.getWidth()-45))//si controlla se colpisce il margine destro
{
destra = false;//si fa cambiare direzione,va a sinistra
xPallina -= spostamento;//e si diminuisce le coordinate delle X
}
else//altrimenti se non ha colpito ancora il margine si aumento le coordinate
{
xPallina += spostamento;
}
}
repaint();
}
}
1.あなたが何を求めているのかは少しはっきりしていません(2つのことを組み合わせると言いますが、1つだけが投稿されているようです)2. 'repaint()メソッドは私にいくつかの問題を与えます。 3.軽量コンポーネント(例: 'JPanel')に描画し、' paintComponent'メソッドをオーバーライドすることを強くお勧めします。 – copeg
2つのオブジェクトは同じです。 mouseMoved私はそれが1つだけのオブジェクトをrepaintしている間、私はそれが2つのオブジェクトを再描画mouseMovedでrepaintメソッドを呼び出すとき。今はっきりしているかどうかはわかりません。 –
「私は分かりませんが、今は分かりますか」残念ですが、本当はありません。 'mouseMoved'の言及と今やちょっと混乱しています。あなたのコードのどこにもないように、' MouseListener'があります。 – copeg