Visualizzazione dei risultati da 1 a 10 su 15

Hybrid View

  1. #1
    Scusate se rompo dinuovo le scatole ma non riesco proprio a capire come funziona questo setBorder e perché lo JScrollPane non aggiunge le barre di scorrimento come piacciono a me. L'interlinea che c'è tra le 3 stringhe che vedete sotto è troppo grande e se setto a 0 i bordi con EmptyBorder non riesco a ridurla.
    Per quanto riguarda JScrollPane vorrei applicare una barra di scorrimento solo verticale a un JPanel che contiene altri JPanel tutti quanti settati con FlowLayout. Il mio problema è che non resco a settare una barra di scorrimento verticale, java me la mette sempre e solo orizzontale.
    JPanel jp = new JPanel();
    JScrollPane jsp = new JSrollPane(jp);
    Ho provato le 1200 soluzioni prese da google ma non c'è stato verso...

    Ecco qui uno stralcio del codice...

    codice:
    import java.awt.BorderLayout;
    import java.awt.ComponentOrientation;
    import java.awt.FlowLayout;
    import java.awt.Font;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    
    import javax.swing.*;
    import javax.swing.border.EmptyBorder;
    
    public class InterfacciaGraficaVotazioni extends JFrame {
    
    ...
    
    private EmptyBorder bordi = new EmptyBorder(0, 0, 0, 0);
    
    ...
    
    private void actionExit() {
            System.exit(0);
        }
    
    public InterfacciaGrafica() {
            
    ...
    
    menu_file.add(comando_exit);
            barra_menu.add(menu_file);
            setJMenuBar(barra_menu);
            // Creazione dell'intestazione della finestra
            JPanel pannello1 = new JPanel();
            pannello1.setBorder(bordi);
            JL_titolo = new JLabel(titolo);
            JL_sottotitolo = new JLabel(sottotitolo);
            JL_descrizione_1 = new JLabel(descrizione_1);
            pannello1.setLayout(new GridLayout(6, 1));
            // Riga 1, 2, 3
            JL_titolo.setHorizontalAlignment(SwingConstants.CENTER);
            JL_titolo.setBorder(bordi);
            pannello1.add(JL_titolo);
            JL_sottotitolo.setHorizontalAlignment(SwingConstants.CENTER);
            JL_sottotitolo.setFont(carattere);
            pannello1.add(JL_sottotitolo);
            JL_descrizione_1.setHorizontalAlignment(SwingConstants.CENTER);
            JL_descrizione_1.setFont(carattere);
            pannello1.add(JL_descrizione_1);
            // Riga 4
            JPanel pannello2 = new JPanel();
            pannello2.setLayout(new FlowLayout());
            JL_nota_1 = new JLabel(nota_1);
            pannello2.add(JL_nota_1);
            JTF_nomefile = new JTextField(nomefile, lunghezza_nomefile);
            pannello2.add(JTF_nomefile);
            JB_inizializza = new JButton(inizializza);
            pannello2.add(JB_inizializza);
            pannello1.add(pannello2);
            // Riga 5
            JPanel pannello3 = new JPanel();
    
         ...
            
        }
    
        // Avvia il software
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
    InterfacciaGrafica interfaccia = new InterfacciaGrafica();
                    interfaccia.setVisible(true);
                }
            });
        }
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    non riesco proprio a capire come funziona questo setBorder
    Semplice: ogni componente Swing può avere 1 Border, che può essere un bordo basilare (es. EmptyBorder, LineBorder) o un bordo "composto" (CompoundBorder). Tutto qui.
    Ah, le classi specifiche dei bordi si possono anche istanziare direttamente ma in genere è preferibile usare le factory in BorderFactory.

    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    perché lo JScrollPane non aggiunge le barre di scorrimento come piacciono a me.
    Nel codice postato non c'è traccia del JScrollPane. Comunque la gestione delle scrollbar è già automatica. Ma nota che il componente da scrollare (es. JTextArea, JTable ...) lo devi mettere come "view" in JScrollPane ed è poi JScrollPane (non il componente) che devi aggiungere nel tuo layout.
    Se vuoi cambiare le policy di visualizzazione delle 2 scrollbar, JScrollPane ha costruttori/metodi appositi.

    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    L'interlinea che c'è tra le 3 stringhe che vedete sotto è troppo grande e se setto a 0 i bordi con EmptyBorder non riesco a ridurla.
    Per quanto riguarda JScrollPane vorrei applicare una barra di scorrimento solo verticale a un JPanel che contiene altri JPanel tutti quanti settati con FlowLayout. Il mio problema è che non resco a settare una barra di scorrimento verticale, java me la mette sempre e solo orizzontale.
    Senza poter vedere (e provare) del codice compilabile .... mi è difficile capire cosa ottieni ora e soprattutto cosa vuoi fare ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.