Mettre un texte sur un JButton
jerem189
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
je voudrais créer un programme qui résout les sudoku afin de m'entrainer pour la programmation en java de mes études. mon idée était la suivante :
- faire un gridlayout 9*9
-insérer un Jbutton a chaque case du gridlayout
-associé un texte ( accessible et modifiable par des méthodes et constructeur hors classe) a un bouton.
-associé un listener a chaque bouton pour qu'a chaque click le programme ouvre la fenetre de commande afin que l'utilisateur puisse entré le chiffre si il est donné ou 0 si il n'est pas donné par le sudoku au préalable
mon soucis se situe au niveau du texte, quel est la solution pour mettre un texte dans un bouton qui peut etre accessible et modifiable en fct de ce que l'utilisateur insère dans la commande.
d'avance merci,
Michaux Jérémy
je voudrais créer un programme qui résout les sudoku afin de m'entrainer pour la programmation en java de mes études. mon idée était la suivante :
- faire un gridlayout 9*9
-insérer un Jbutton a chaque case du gridlayout
-associé un texte ( accessible et modifiable par des méthodes et constructeur hors classe) a un bouton.
-associé un listener a chaque bouton pour qu'a chaque click le programme ouvre la fenetre de commande afin que l'utilisateur puisse entré le chiffre si il est donné ou 0 si il n'est pas donné par le sudoku au préalable
mon soucis se situe au niveau du texte, quel est la solution pour mettre un texte dans un bouton qui peut etre accessible et modifiable en fct de ce que l'utilisateur insère dans la commande.
d'avance merci,
Michaux Jérémy
A voir également:
- Mettre un texte sur un JButton
- Mettre un texte en majuscule - Guide
- Texte de chanson gratuit pdf - Télécharger - Vie quotidienne
- Traduire un texte en photo - Guide
- Comment mettre un texte en colonne sur word - Guide
- Dicter un texte sur android - Guide
3 réponses
Pourquoi utiliser des JButton pour un Sudoku, des JTextField serait plus adapté je pense, ça permettrait de directement modifier la grille, sans avoir à ouvrir une pop-up...
bonjour,
tout d'abord, merci de votre réponse rapide.
ensuite, pour les JTextField, j'ai 2-3 questions. premièrement , peut-on insérer un JTextField dans un gridlayout a la manière d'un bouton ? deuxièmement , un JTextField peut-il être a l'écoute d'un click de souris ?
et enfin, j'avais déja regardé comment manipuler des JTextField, mais je n'avais pas trouvé la méthode qui permet de modifier le text contenu dans le 'field'.
d'avance merci
tout d'abord, merci de votre réponse rapide.
ensuite, pour les JTextField, j'ai 2-3 questions. premièrement , peut-on insérer un JTextField dans un gridlayout a la manière d'un bouton ? deuxièmement , un JTextField peut-il être a l'écoute d'un click de souris ?
et enfin, j'avais déja regardé comment manipuler des JTextField, mais je n'avais pas trouvé la méthode qui permet de modifier le text contenu dans le 'field'.
d'avance merci
"peut-on insérer un JTextField dans un gridlayout a la manière d'un bouton ?"
Le GridLayout sert uniquement à décrire comment placer les éléments, il ne contient pas lui même les objets, ça c'est le travail des conteneurs (JFrame, JPanel, etc.), mais oui, on peut ajouter n'importe quoi, y compris d'autres conteneur possédant des GridLayout de manières à faire les grilles intérieures (3x3)
"un JTextField peut-il être a l'écoute d'un click de souris ?"
Oui, bien sûr, mais également au clavier (et c'est tout l'intérêt).
"la méthode qui permet de modifier le text contenu dans le 'field'"
C'est setText(String), mais elle est un peu cachée dans la documentation de JTextField, car elle est directement héritée de JTextComponent.
Voici, un "petit" exemple qui illustre tes questions et mes réponses ;-)
Le GridLayout sert uniquement à décrire comment placer les éléments, il ne contient pas lui même les objets, ça c'est le travail des conteneurs (JFrame, JPanel, etc.), mais oui, on peut ajouter n'importe quoi, y compris d'autres conteneur possédant des GridLayout de manières à faire les grilles intérieures (3x3)
"un JTextField peut-il être a l'écoute d'un click de souris ?"
Oui, bien sûr, mais également au clavier (et c'est tout l'intérêt).
"la méthode qui permet de modifier le text contenu dans le 'field'"
C'est setText(String), mais elle est un peu cachée dans la documentation de JTextField, car elle est directement héritée de JTextComponent.
Voici, un "petit" exemple qui illustre tes questions et mes réponses ;-)
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Test
{
public static void main(String...args)
{
final JFrame frame = new JFrame();
frame.setSize(250,274);
frame.setLayout(new GridLayout(3,3));
final JPanel[][] pan_tab = new JPanel[3][3];
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
{
pan_tab[i][j] = new JPanel(new GridLayout(3,3));
pan_tab[i][j].setBorder(BorderFactory.createLineBorder(Color.BLACK));
frame.add(pan_tab[i][j]);
}
final JTextField[][] txt_tab = new JTextField[9][9];
for (int i=0; i<9; i++)
for (int j=0; j<9; j++)
{
final String initialText = i+","+j;
final JTextField field = new JTextField(initialText);
field.addKeyListener(new KeyListener()
{
@Override
public void keyPressed(KeyEvent e)
{
System.out.println(initialText+"\tkeyPressed");
}
@Override
public void keyReleased(KeyEvent e)
{
System.out.println(initialText+"\tkeyReleased");
}
@Override
public void keyTyped(KeyEvent e)
{
System.out.println(initialText+"\tkeyTyped");
}
});
field.addMouseListener(new MouseListener()
{
@Override
public void mouseClicked(MouseEvent e)
{
System.out.println(initialText+"\tmouseClicked");
}
@Override
public void mouseEntered(MouseEvent e)
{
System.out.println(initialText+"\tmouseEntered");
}
@Override
public void mouseExited(MouseEvent e)
{
System.out.println(initialText+"\tmouseExited");
}
@Override
public void mousePressed(MouseEvent e)
{
System.out.println(initialText+"\tmousePressed");
}
@Override
public void mouseReleased(MouseEvent e)
{
System.out.println(initialText+"\tmouseReleased");
}
});
pan_tab[i/3][j/3].add(field);
txt_tab[i][j] = field;
}
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}