OVH Cloud OVH Cloud

Composant +/- Developper

5 réponses
Avatar
Pif
Bonjour, j'aimerais savoir si quelqu'un connait un ptit composant qui se
comporte comme une case à cocher, mais qui au lieu d'être coché/décoché,
affiche un + ou un - pour marquer le développement d'un détail ?

Merci !

5 réponses

Avatar
ekse
Bonjour, j'aimerais savoir si quelqu'un connait un ptit composant qui se
comporte comme une case à cocher, mais qui au lieu d'être coché/décoché,
affiche un + ou un - pour marquer le développement d'un détail ?

Merci !


Salut,

Tu fais un bouton qui affiche deux images, il passe de l'une à l'autre à
chaque clic, non ?

Avatar
Pif
j'ai prix un togglebutton, mais il est plus volumineux qu'une case à
cocher, j'espérais une solutions "jolie" pour les yeux :)

surtout, y'a plein d'applications qui font ca, et je m'étonne toujours
de ne pas trouver des composants aussi élémentaires dans Swing... pasque
développer ses propres composants c'est bien, mais du coup tu perds
facilement de l'homogénéité avec l'interface en général et système de
fenetrage et le L&F....

Quand on voit les projets d'IHM de Sun, j'arrive toujours pas à
comprendre qu'ils fassent des composants aussi pauvres !

mais bon....


Tu fais un bouton qui affiche deux images, il passe de l'une à l'autre à
chaque clic, non ?


Avatar
Kplan

Bonjour, j'aimerais savoir si quelqu'un connait un ptit composant qui se
comporte comme une case à cocher, mais qui au lieu d'être coché/d écoché,
affiche un + ou un - pour marquer le développement d'un détail ?

Merci !


Salut, je viens de te faire un petit bout de code. Regardes si cela
peut te convenir:


import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.plaf.basic.BasicButtonUI;
import javax.swing.plaf.ButtonUI;
import javax.swing.filechooser.*;
import javax.swing.filechooser.*;

public class PlusMoinsDemo extends JPanel implements ActionListener {
JButton button;
Icon plus = new ImageIcon(getClass().getResource("plus.gif"));
Icon moins = new ImageIcon(getClass().getResource("moins.gif"));

public PlusMoinsDemo() {
super();
button = createButtonUI();
button.setIcon(plus);
button.addActionListener(this);

add(button);
}

public JButton createButtonUI() {
ButtonUI bouttonUI = new BasicButtonUI() {
Icon tmpIcon = plus;

protected void paintIcon(Graphics g, JComponent c,
Rectangle iconRect) {
AbstractButton b = (AbstractButton) c;
ButtonModel model = b.getModel();

if(model.isPressed() && model.isArmed()) {
tmpIcon = moins;
moins = plus;
plus = tmpIcon;
tmpIcon.paintIcon(c, g, iconRect.x, iconRect.y);
} else {
tmpIcon.paintIcon(c, g, iconRect.x, iconRect.y);
}
}
};
JButton b = new JButton();
b.setUI(bouttonUI);
return b;
}

public void actionPerformed(ActionEvent e) {
// TODO
}


private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("FileChooserDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComponent newContentPane = new PlusMoinsDemo();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setSize(200, 100);
frame.setVisible(true);
}

public static void main(String[] args) {
try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception exc) {
System.err.println("Erreur chargement L&F: " + exc);
}
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}


PS: tu trouvera les images qui vont avec dans ta boite personnel (2 gif
de dim 11x11).


@+

Avatar
Kplan
Désolé, je pensais pouvoir joindre les images mais il me faut une
autre adresse ! Sinon tu les réalises toi même :

2 gif de11x11 dans lesquels tu dessine un cadre noir sur le poutour et
au sein desquels tu traces un plus et un moins en leurs centres.

Bon courage.

@+
Avatar
TestMan
Bonsoir Pif,

Pif wrote:
j'ai prix un togglebutton, mais il est plus volumineux qu'une case à
cocher, j'espérais une solutions "jolie" pour les yeux :)

surtout, y'a plein d'applications qui font ca, et je m'étonne toujours
de ne pas trouver des composants aussi élémentaires dans Swing... pasque
développer ses propres composants c'est bien, mais du coup tu perds
facilement de l'homogénéité avec l'interface en général et système de
fenetrage et le L&F....

Quand on voit les projets d'IHM de Sun, j'arrive toujours pas à
comprendre qu'ils fassent des composants aussi pauvres !

mais bon....


Tu es sur d'avoir cherché un tout petit peu ?

Car les JCheckbox font ça très bien :o)

La preuve tu la trouveras dans la SwingSet demo, onglet JCheckbox demo,
puis Check Boxes et ô magie délirante, la section Image CheckBoxes
montre justement ça !

Pour info, je n'ai à ce jour pas trouvé de vrai limites à Swing ...
Voir : http://www.jgoodies.com/

Qu'ils sont complexes, mal/peu documentés, soit !
Que peu d'informaticiens disposent de compétences en ergonomie et
graphisme pour les maitriser, soit !

Mais juger de pauvre les swing c'est une grosse méprise. Car exception
faite de la non-gesion des sub-pixels (limitant pour les ZUI par
exemple), c'est bien la librairie de composant graphique la plus
complète et cohérente que je connaisse. Je t'invite trés fortement à
lire des bouquins sur le sujet, et lorsque tu aurras joué avec les
layouts, layers, la transparence alpha, les icones annimés, l'HTML
intégré sur les boutons et autres ménus enrichis par des composants ...
et puis si on y rajoute les JDNC,SwingX et les divers frameworks et
composants libres disponibles sur le net ... là je vois pas qui peut
faire jeu égal.

Enfin, c'est mon avis ;-)

A+

TM