السلام عليكم اخوتي الكرام.
اريد اضافة form حتى اتمكن من اضهار الصورة المحملة من listener التالي:
public class GamePropertiesPane extends JPanel
{
static final PuzzleCutter [] cutters = {new ClassicCutter()};
static final Color HELP_COLOR = new Color (100,100,150);
//creation de la fenetre des proprietes du jeu
public GamePropertiesPane()
{
super(new BorderLayout());
initGUI();
addWiring();
fireCutterChanged();
imageField.setText (getCurrentPath());
imageField.selectAll();
}
private void initGUI()
{
imageField = new JTextField();
browseButton = new JButton ("Ouvrir...");
browseButton.setMnemonic ('O');
JPanel imageTopPane = new JPanel(new BorderLayout());
imageTopPane.add (imageField, BorderLayout.CENTER);
imageTopPane.add (browseButton, BorderLayout.EAST);
JPanel imagePane = new JPanel(new BorderLayout());
imagePane.setBorder (createTitledBorder ("Image"));
imagePane.add (imageTopPane, BorderLayout.NORTH);
cutterCBox = new JComboBox(cutters);
JPanel cutterPane = new JPanel (new BorderLayout());
cutterPane.add (cutterCBox, BorderLayout.NORTH);
cutterPane.setBorder (createTitledBorder ("Style de coupe"));
//creation d'un panel pour choisir le nombre de piece
//2-2000 pieces min et max, 50 ici par defaut
SpinnerNumberModel spinModel = new SpinnerNumberModel(50, 2, 2000, 1);
pieceSpinner = new JSpinner(spinModel);
JPanel piecePane = new JPanel (new BorderLayout());
piecePane.add (pieceSpinner, BorderLayout.NORTH);
piecePane.setBorder (createTitledBorder ("Nombre de pièces"));
//mettre le nombre de piece et la methode de coupe dans un seul panel
JPanel settingsPane = new JPanel (new GridLayout(1,2, 5,5));
settingsPane.add (cutterPane);
settingsPane.add (piecePane);
this.add (imagePane, BorderLayout.NORTH);
this.add (settingsPane, BorderLayout.CENTER);
}
public static Border createTitledBorder (String title)
{
Border outer = BorderFactory.createTitledBorder (BorderFactory.createEtchedBorder(), title);
Border inner = BorderFactory.createEmptyBorder (2,5,5,5);
return BorderFactory.createCompoundBorder (outer, inner);
}
private void addWiring()
{
browseButton.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent e)
{ fireBrowseAction(); }
});
cutterCBox.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent e)
{ fireCutterChanged(); }
});
}
private JTextField imageField;
private JButton browseButton;
private JComboBox cutterCBox;
private JSpinner pieceSpinner;
//les proprietés changé par l'utilisateur
private Image image;
private PuzzleCutter cutter;
public Image getImage() { return image; }
public PuzzleCutter getCutter() { return cutter; }
protected void fireBrowseAction()
{
System.out.println("Dossier courant = " + getCurrentFolder());
JFileChooser chooser = new JFileChooser(getCurrentFolder());
chooser.setFileSelectionMode (JFileChooser.FILES_AND_DIRECTORIES);
int choose = chooser.showOpenDialog(this);
if (choose == JFileChooser.APPROVE_OPTION)
{
imageField.setText (chooser.getSelectedFile().getAbsolutePath());
}
}
protected void fireCutterChanged()
{
PuzzleCutter cutter = (PuzzleCutter) cutterCBox.getSelectedItem();
pieceSpinner.setEnabled (cutter instanceof VariableCountCutter);
}
public void setUpPuzzleProperties() throws GamePropertiesException
{
// charger l'image
File file = new File (imageField.getText());
if (!file.exists()) throw new GamePropertiesException("Fichier introuvable.");
image = Toolkit.getDefaultToolkit().getImage (file.getAbsolutePath());
//selection de la methode de decoupe
cutter = (PuzzleCutter) cutterCBox.getSelectedItem();
if (cutter instanceof VariableCountCutter) {
VariableCountCutter varCutter = (VariableCountCutter) cutter;
int count = ((Number) pieceSpinner.getValue()).intValue();
varCutter.setPreferredPieceCount (count);
}
}
private String getCurrentPath()
{
File folder = getCurrentFolder();
try {
return folder.getCanonicalPath();
} catch (IOException ex) {
return folder.getAbsolutePath();
}
}
private File getCurrentFolder()
{
String text = imageField.getText().trim();
if (text.length() == 0) text = ".";
return new File (text);
}
}فكيف يمكنني ذلك حفضكم الله.