WindowsBuilder swing java
Résolu
Streamooc
Messages postés
89
Statut
Membre
-
Streamooc Messages postés 89 Statut Membre -
Streamooc Messages postés 89 Statut Membre -
bonjour je suis nouveau en swing java et je rencontre un problème majeur si quelqu'un pourrait m'aider.Le but de mon programme est de permettre à l'utilsateur une fois en cliquant sur le bouton 'run' de déclencher le défilement d'un fil rouge.Je vous présente les deux classes que j'ai créées.'FilDecrochage' qui permet de dessiner le fil et la classe principale dans laquelle j'ai mis ActionListener sur le bouton run.La méthode 'go' permet de déclencher le fil.
public class FilDecrochage extends JPanel{
public FilDecrochage() {
}
//Partie 1:fil rouge
private int posX = 20;
private int posY = -20;
@Override
public void paintComponent(Graphics g){
g.setColor(Color.red);
g.fillRect(posX, posY, 50, 50);
}
public int getPosX() {
return posX;
}
public void setPosX(int posX) {
this.posX = posX;
}
public int getPosY() {
return posY;
}
public void setPosY(int posY) {
this.posY = posY;
}
}
public class ClassePrincipale extends JFrame {
private JPanel contentPane;
private FilDecrochage pan=new FilDecrochage();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ClassePrincipale frame = new ClassePrincipale();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public ClassePrincipale() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JToggleButton toggleButton = new JToggleButton("");
toggleButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
go();
}
});
toggleButton.setIcon(new ImageIcon(ClassePrincipale.class.getResource("/tapwindowsbuilder/ressources/run.png.png")));
contentPane.add(toggleButton, BorderLayout.CENTER);
}
private void go() {
// TODO Auto-generated method stub
for(int i = -50; i < pan.getWidth(); i++){
int x = pan.getPosX(), y = pan.getPosY();
x++;
y++;
pan.setPosX(x);
pan.setPosY(y);
pan.repaint(); //pan.repaint(). Elle demande à votre composant, ici un JPanel, de se redessiner.
try {
Thread.sleep(10); ///Mise en attente du programme pendant un laps de temps défini dans la méthode sleep() exprimé en millièmes de seconde
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
A voir également:
- WindowsBuilder swing java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
import java.awt.*; import javax.swing.*; public class ClassePrincipale { public static void main(String[] args) { new FenetrePrincipale().setVisible(true); } } class FenetrePrincipale extends JFrame { private static final long serialVersionUID = 1L; public FenetrePrincipale() { setSize(500, 300); setLocationByPlatform(true); setDefaultCloseOperation(EXIT_ON_CLOSE); FilDecrochage fil = new FilDecrochage(0, 0); add(fil, BorderLayout.CENTER); JButton button = new JButton("Run"); button.addActionListener(e -> go(fil)); add(button, BorderLayout.SOUTH); } private void go(FilDecrochage fil) { new SwingWorker<Void, Void>() { @Override protected Void doInBackground() { for (int i = 0; i < 30; i++) { fil.incrX(); fil.incrY(); fil.repaint(); sleep(10); } return null; } }.execute(); } private static void sleep(long ms) { try { Thread.sleep(ms); } catch (InterruptedException e) { e.printStackTrace(); } } } class FilDecrochage extends Component { private static final long serialVersionUID = 1L; private int posX; private int posY; public FilDecrochage(int posX, int posY) { this.posX = posX; this.posY = posY; } @Override public void paint(Graphics g) { g.setColor(Color.red); g.fillRect(posX, posY, 50, 50); } public void incrX() { posX++; } public void incrY() { posY++; } }