JscrollPane avec un SetLayout(null)
Fermé
bmartinkle
-
2 mai 2013 à 16:49
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 2 mai 2013 à 21:02
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 2 mai 2013 à 21:02
A voir également:
- Comment ouvrir un fichier null ?
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
- Comment ouvrir un fichier dat - Guide
- Comment réduire la taille d'un fichier - Guide
3 réponses
KX
Messages postés
16760
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
2 mai 2013 à 19:11
2 mai 2013 à 19:11
Voici un exemple.
En rouge, tu as le Container de la JFrame (qui contient monCadre)
En bleu, c'est le JPanel monCadre.
Et en plein milieu, à l'intérieur de monCadre, tu as l'image avec ses barres.
En rouge, tu as le Container de la JFrame (qui contient monCadre)
En bleu, c'est le JPanel monCadre.
Et en plein milieu, à l'intérieur de monCadre, tu as l'image avec ses barres.
import java.awt.Color; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; public class Test { public static void main(String[] args) { JFrame frame = new JFrame(); frame.setSize(500,500); frame.setLayout(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setBackground(Color.RED); JPanel monCadre = new JPanel(); monCadre.setLayout(null); monCadre.setBackground(Color.BLUE); monCadre.setBounds(100,100,300,300); ImageIcon icon = new ImageIcon("C:/test.png"); JLabel image = new JLabel(icon); image.setSize(icon.getIconWidth(),icon.getIconHeight()); JScrollPane scroll = new JScrollPane(image); scroll.setBounds(100,100,100,100); frame.add(monCadre); monCadre.add(scroll); frame.setVisible(true); } }
Cependant, mon image s'affiche dans un JPanel, pas dans un JLabel; et je pense c'est pour ça que ton code ne fonctionne pas dans mon cas (je viens de l'essayer)
KX
Messages postés
16760
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
2 mai 2013 à 20:42
2 mai 2013 à 20:42
Là aussi l'image s'affiche dans un JPanel, je l'ai même colorié en bleu pour mieux le voir (et il a bien le setLayout à null comme tu le voulais...)
Après j'ai imbriqué un JScrollPane avec un JLabel et une ImageIcon, ça peut paraître compliqué, mais c'est le plus simple. En plus ça te permet d'utiliser ce que je t'indiquais hier pour utiliser les images quand elles sont stockées dans un JAR :
Après j'ai imbriqué un JScrollPane avec un JLabel et une ImageIcon, ça peut paraître compliqué, mais c'est le plus simple. En plus ça te permet d'utiliser ce que je t'indiquais hier pour utiliser les images quand elles sont stockées dans un JAR :
ImageIcon icon = new ImageIcon(Test.class.getResource("img/test.png"));
pourtant tu as écris :
"JScrollPane scroll = new JScrollPane(image);"
Or image est déclaré comme un JLabel.
Cependant moi mon image ne s'affiche sur un JLabel mais directement dans un JPanel... Je pense que c'est pour ça que cela ne fonctionne pas le JScrollPane.
"JScrollPane scroll = new JScrollPane(image);"
Or image est déclaré comme un JLabel.
Cependant moi mon image ne s'affiche sur un JLabel mais directement dans un JPanel... Je pense que c'est pour ça que cela ne fonctionne pas le JScrollPane.
KX
Messages postés
16760
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
2 mai 2013 à 21:02
2 mai 2013 à 21:02
Oui, image est un JLabel, je suis d'accord, mais c'est scroll que tu manipules au final puisque ce que tu veux c'est bien ça : un JScrollPane pour ton image...
Remarque : on pourrait "cacher" l'utilisation de ImageIcon et JLabel comme dans le code suivant, mais on ne va pas se mentir, c'est la même chose !
Tu dis que ton image s'affiche "directement dans un JPanel" montre moi comment tu as fait, mais la meilleure manière de le faire je viens déjà de te la montrer...
Remarque : on pourrait "cacher" l'utilisation de ImageIcon et JLabel comme dans le code suivant, mais on ne va pas se mentir, c'est la même chose !
public static JScrollPane scrollableImage(String fileName) { ImageIcon icon = new ImageIcon("C:/test.png"); JLabel image = new JLabel(icon); image.setSize(icon.getIconWidth(),icon.getIconHeight()); return new JScrollPane(image); } JScrollPane scroll = scrollableImage("C:/test.png"); scroll.setBounds(100,100,100,100); monCadre.add(scroll);
Tu dis que ton image s'affiche "directement dans un JPanel" montre moi comment tu as fait, mais la meilleure manière de le faire je viens déjà de te la montrer...