AWT/Swing Java : ScrollPane Java Swing

Navigation

Inscrivez-vous gratuitementpour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  • Vous n'êtes pas encore inscrit sur Developpez.com ? Inscrivez-vous gratuitement !
  • Recherche avancée
  • Accueil
  • Forum
  • Java
  • Interfaces Graphiques en Java
  • AWT/Swing
  • ScrollPane java swing
+ Répondre à la discussion AWT/Swing Java Discussion : ScrollPane java swing Sujet :

AWT/Swing Java

  • Outils de la discussion
    • Afficher une version imprimable
    • S'abonner à cette discussion…
  • Affichage
    • Mode linéaire
    • Choisir le mode hybride
    • Choisir le mode arborescent
  1. 15/07/2019, 15h03 #1 Medzfall Medzfall est déconnecté Membre habitué Homme Profil pro Développeur JavaInscrit enAvril 2019Messages9Détails du profilInformations personnelles :Sexe : HommeLocalisation : France, Paris (Île de France)Informations professionnelles :Activité : Développeur JavaSecteur : High Tech - Matériel informatiqueInformations forums :Inscription : Avril 2019Messages : 9 Par défaut ScrollPane java swing
    Bonjour, je veux créer une interface avec un scrollPane mais je n'arrive pas à faire fonctionner le scrollpane, j'ai besoin de votre aide. Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215import java.awt.Dimension; import java.awt.EventQueue; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.BorderLayout; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JButton; public class TestScroll { private JFrame frame; private JTextField textField; private JTextField textField_1; private JTextField textField_2; private JTextField textField_3; private JTextField textField_4; private JTextField textField_5; private JTextField textField_6; private JTextField textField_7; private JTextField textField_8; private JTextField textField_9; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { TestScroll window = new TestScroll(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the application. */ public TestScroll() { initialize(); } /** * Initialize the contents of the frame. */ private void initialize() { frame = new JFrame(); frame.setBounds(100, 100, 1327, 748); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); frame.getContentPane().add(panel, BorderLayout.CENTER); panel.setLayout(null); JTextArea textArea = new JTextArea(); textArea.setBounds(403, 100, 746, 536); panel.add(textArea); JButton btnNewButton = new JButton("New button"); btnNewButton.setBounds(800, 760, 119, 20); panel.add(btnNewButton); JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(15, 235, 413, -225); panel.add(scrollPane); JLabel lblChamp = new JLabel("champ1"); lblChamp.setBounds(15, 16, 69, 20); panel.add(lblChamp); JLabel lblChamp_1 = new JLabel("champ2"); lblChamp_1.setBounds(15, 72, 69, 20); panel.add(lblChamp_1); textField = new JTextField(); textField.setBounds(103, 13, 146, 26); panel.add(textField); textField.setColumns(10); textField_1 = new JTextField(); textField_1.setBounds(99, 69, 146, 26); panel.add(textField_1); textField_1.setColumns(10); JLabel lblChamp_2 = new JLabel("champ3"); lblChamp_2.setBounds(15, 128, 69, 20); panel.add(lblChamp_2); textField_2 = new JTextField(); textField_2.setBounds(103, 125, 146, 26); panel.add(textField_2); textField_2.setColumns(10); JLabel lblChamp_3 = new JLabel("champ5"); lblChamp_3.setBounds(15, 188, 69, 20); panel.add(lblChamp_3); textField_3 = new JTextField(); textField_3.setBounds(103, 185, 146, 26); panel.add(textField_3); textField_3.setColumns(10); JLabel lblChamp_4 = new JLabel("champ6"); lblChamp_4.setBounds(15, 257, 69, 20); panel.add(lblChamp_4); textField_4 = new JTextField(); textField_4.setBounds(103, 254, 146, 26); panel.add(textField_4); textField_4.setColumns(10); JLabel lblChamp_5 = new JLabel("champ7"); lblChamp_5.setBounds(15, 315, 69, 20); panel.add(lblChamp_5); textField_5 = new JTextField(); textField_5.setBounds(103, 312, 146, 26); panel.add(textField_5); textField_5.setColumns(10); JLabel lblChamp_6 = new JLabel("champ8"); lblChamp_6.setBounds(15, 387, 69, 20); panel.add(lblChamp_6); textField_6 = new JTextField(); textField_6.setBounds(103, 384, 146, 26); panel.add(textField_6); textField_6.setColumns(10); JLabel lblChamp_7 = new JLabel("champ9"); lblChamp_7.setBounds(15, 452, 69, 20); panel.add(lblChamp_7); textField_7 = new JTextField(); textField_7.setBounds(103, 449, 146, 26); panel.add(textField_7); textField_7.setColumns(10); JLabel lblChamp_8 = new JLabel("champ10"); lblChamp_8.setBounds(15, 536, 69, 20); panel.add(lblChamp_8); textField_8 = new JTextField(); textField_8.setBounds(103, 533, 146, 26); panel.add(textField_8); textField_8.setColumns(10); JLabel lblChamp_9 = new JLabel("champ11"); lblChamp_9.setBounds(15, 612, 69, 20); panel.add(lblChamp_9); textField_9 = new JTextField(); textField_9.setBounds(103, 609, 146, 26); panel.add(textField_9); textField_9.setColumns(10); JLabel lblChamp_11 = new JLabel("champ11"); lblChamp_11.setBounds(15, 736, 69, 20); panel.add(lblChamp_11); JTextField textField_11 = new JTextField(); textField_11.setBounds(103, 736, 146, 26); panel.add(textField_11); textField_11.setColumns(11); JLabel lblChamp_12 = new JLabel("champ12"); lblChamp_12.setBounds(15, 800, 69, 20); panel.add(lblChamp_12); JTextField textField_12 = new JTextField(); textField_12.setBounds(103, 800, 146, 26); panel.add(textField_12); JLabel lblChamp_13 = new JLabel("champ13"); lblChamp_13.setBounds(15, 1162, 69, 20); panel.add(lblChamp_13); JTextField textField_13 = new JTextField(); textField_13.setBounds(103, 1162, 146, 26); panel.add(textField_13); textField_13.setColumns(13); JLabel lblChamp_14 = new JLabel("champ13"); lblChamp_14.setBounds(15, 1362, 69, 20); panel.add(lblChamp_14); JTextField textField_14 = new JTextField(); textField_14.setBounds(103, 1362, 146, 26); panel.add(textField_14); textField_13.setColumns(14); } }
    Répondre avec citation Répondre avec citation 0 0
  2. 14/10/2019, 00h02 #2 abdennour bouaicha abdennour bouaicha est déconnecté Membre actif Avatar de abdennour bouaicha Homme Profil pro Développeur JavaInscrit enAvril 2009Messages98Détails du profilInformations personnelles :Sexe : HommeLocalisation : MarocInformations professionnelles :Activité : Développeur JavaInformations forums :Inscription : Avril 2009Messages : 98 Par défaut
    salut, pour que le scroll fonctionne on doit utiliser la gridlayout, de plus il ne faut pas mettre l'objet srcollpane dans le panel qui contient les éléments du programme (JTextField,JButton,...) mais plutôt le panel doit être un élément du scrollpane,j'ai fait un petit bricole à ton code et j’espère répondre à ton problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 import java.awt.Color; import java.awt.GridLayout; import java.awt.Point; import java.awt.Rectangle; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class TestScroll { private JFrame fr = new JFrame( "test scroll" ); private JPanel panel = new JPanel(); private JPanel panTab = new JPanel(); private Rectangle r = new Rectangle( 0, 0, 1000, 1000 ); private Color c = Color.BLUE; private Point p; private JPanel panel_1 = new JPanel(); private JTextField textField; private JTextField textField_1; private JTextField textField_2; private JTextField textField_3; private JTextField textField_4; private JTextField textField_5; private JTextField textField_6; private JTextField textField_7; private JTextField textField_8; private JTextField textField_9; public TestScroll() { fr.getContentPane().setBackground( Color.BLUE ); fr.setBackground( c ); fr.setDefaultCloseOperation( fr.EXIT_ON_CLOSE ); fr.setSize( 1000, 1000 ); fr.setVisible( true ); fr.getContentPane().setLayout( null ); fr.setLocationRelativeTo( null ); panel.setBounds( new Rectangle( 0, 0, 1000, 1000 ) ); panel.setBackground( c ); panel.setBorder( null ); panel.setLayout( null ); fr.getContentPane().add( panel ); JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds( 10, 11, 380, 220 ); panel.add( scrollPane ); scrollPane.setViewportView( panel_1 ); panel_1.setLayout( new GridLayout( 10, 1, 30, 50 ) ); JTextArea textArea = new JTextArea(); textArea.setBounds( 428, 11, 373, 234 ); panel.add( textArea ); JButton btnNewButton = new JButton( "New button" ); btnNewButton.setBounds( 491, 293, 122, 23 ); panel.add( btnNewButton ); field( textField ); field( textField_1 ); field( textField_2 ); field( textField_3 ); field( textField_4 ); field( textField_5 ); field( textField_6 ); field( textField_7 ); field( textField_8 ); field( textField_9 ); panel.repaint(); panel.revalidate(); } public void field( JTextField t ) { t = new JTextField(); t.setColumns( 30 ); panel_1.add( t ); } public static void main( String[] args ) { new TestScroll(); } }
    Répondre avec citation Répondre avec citation 0 0
  3. 14/10/2019, 00h53 #3 joel.drigo joel.drigo est déconnecté Modérateur Avatar de joel.drigo Homme Profil pro Ingénieur R&D - Développeur JavaInscrit enSeptembre 2009Messages12 430Détails du profilInformations personnelles :Sexe : HommeÂge : 56Localisation : France, Paris (Île de France)Informations professionnelles :Activité : Ingénieur R&D - Développeur JavaSecteur : High Tech - Éditeur de logicielsInformations forums :Inscription : Septembre 2009Messages : 12 430Billets dans le blog2 Par défaut
    Salut. On n'est pas obligé d'utiliser un GridLayout, il faut juste utiliser un LayoutManager, sinon c'est compliqué pour que le JScrollPane connaisse la taille du viewport. Au lieu de jpanel.setLayout(null); il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768panel.setLayout(new LayoutManager2() { private List<Component> components = new ArrayList<>(); private Dimension size=new Dimension(); @Override public void removeLayoutComponent(Component comp) { components.remove(comp); computeSize(); } @Override public Dimension preferredLayoutSize(Container parent) { return size; } @Override public Dimension minimumLayoutSize(Container parent) { return size; } @Override public void layoutContainer(Container parent) { computeSize(); } @Override public void addLayoutComponent(String name, Component comp) { components.add(comp); computeSize(); } private void computeSize() { Rectangle rectangle = new Rectangle(); for(Component component : components) { rectangle = rectangle.union(component.getBounds()); } size = rectangle.getSize(); System.out.println(size); } @Override public void addLayoutComponent(Component comp, Object constraints) { components.add(comp); } @Override public Dimension maximumLayoutSize(Container target) { return size; } @Override public float getLayoutAlignmentX(Container target) { return 0; } @Override public float getLayoutAlignmentY(Container target) { return 0; } @Override public void invalidateLayout(Container target) { computeSize(); } });
    Il faut effectivement que le JScrollpane ne soit pas un composant du JPanel, mais il ne faut pas non plus que le JPanel soit composant du JScrollPane (ajouté par add()), mais viewport : donc au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1234JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(15, 235, 413, -225); panel.add(scrollPane);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    12345JScrollPane scrollPane = new JScrollPane(panel,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); //scrollPane.setBounds(15, 235, 413, -225); frame.getContentPane().add(scrollPane, BorderLayout.CENTER); //panel.add(scrollPane);
    Il faut enlever aussi (ce n'est pas absolument indispensable, mais c'est plus propre) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    frame.getContentPane().add(panel, BorderLayout.CENTER);
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème. La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne. Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse. Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides. N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages). Nouveau sur le forum ? Consultez Les Règles du Club.
    Répondre avec citation Répondre avec citation 0 0
+ Répondre à la discussion
ActualitésFAQs JavaTutoriels JavaLivres JavaSources JavaOutils, EDI & API JavaJavaSearch
  • Accueil
  • Forum
  • Java
  • Interfaces Graphiques en Java
  • AWT/Swing
  • ScrollPane java swing
« Discussion précédente | Discussion suivante »

Discussions similaires

  1. [Java Swing]JButton avec TableModel Par dim_italia dans le forum AWT/Swing Réponses: 5 Dernier message: 20/02/2006, 22h04
  2. [debutant]import java.swing? Par arou dans le forum Eclipse Java Réponses: 2 Dernier message: 09/02/2006, 13h13
  3. Séminaire Java Swing en vidéo Par Olivier Delmotte dans le forum Evolutions du club Réponses: 3 Dernier message: 16/01/2006, 13h33
  4. Application lourde en Java, Swing ou autre... Par eponette dans le forum AWT/Swing Réponses: 12 Dernier message: 23/09/2005, 23h17
  5. [Java-Swing][HTML] Page html à inclure dans application Java Par terminagroo dans le forum AWT/Swing Réponses: 4 Dernier message: 04/07/2005, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo

Tag » Add Element Jscrollpane