Ben benim programda bir düğmeye basın Tıkladığınız anda
Yani düğmesine erişimi varken yarım boyutunu olmak için bir JFrame animasyon istiyorum. Sonra çerçeveye referans almak için
kullanabilirsiniz.
Artık Zamanlayıcı için ActionListener öğesini oluşturduğunuzda, Window'da ActionListener için bir argüman olarak iletebilirsiniz.
Düzenleme: mre tarafından
öneri basit ve yalındır ve birçok durumda kullanımı kolaydır (ve muhtemelen bu durumda daha iyi bir çözüm).
Benim önerim biraz daha karmaşık ama size SwingUtilities yöntemini tanıtıyordu, bu da sonunda oluşturabileceğiniz herhangi bir çerçeve veya iletişim kutusu tarafından kullanılabilecek daha fazla yeniden kullanılabilir kod yazmanıza izin verecek. Winow belirli bir minimum boyuta ulaştığında zamanlayıcı durdurmak isteyeyim Tabii
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class AnimationSSCCE extends JPanel
{
public AnimationSSCCE()
{
JButton button = new JButton("Start Animation");
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JButton button = (JButton)e.getSource();
WindowAnimation wa = new WindowAnimation(
SwingUtilities.windowForComponent(button));
}
});
add(button);
}
class WindowAnimation implements ActionListener
{
private Window window;
private Timer timer;
public WindowAnimation(Window window)
{
this.window = window;
timer = new Timer(20, this);
timer.start();
}
@Override
public void actionPerformed(ActionEvent e)
{
window.setSize(window.getWidth() - 5, window.getHeight() - 5);
// System.out.println(window.getBounds());
}
}
private static void createAndShowUI()
{
JFrame frame = new JFrame("AnimationSSCCE");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new AnimationSSCCE());
frame.setSize(500, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowUI();
}
});
}
}
:
Basit bir örnek gibi bir şey olurdu. Bu kodu sana bırakacağım.
'frame.getWidth()' öğesini deneyin; burada 'frame' size atıfta bulunduğunuz JFrame'dir. – fireshadow52