|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2010
Messaggi: 1710
|
[Java] pannello con barra di scorrimento.
Buonasera, sto programmando in Java un'applicazione con interfaccia grafica, il mio obiettivo sarebbe costruire un'interfaccia grafica (JFrame) con 2 pannelli, il primo dei quali dovrebbe contenere una barra di scorrimento da attivare qualora il numero di elementi inserito fosse troppo elevato (prendo degli elementi da un vettore e devo stampare tante label o textArea quanti sono gli elementi di un vettore, ciascuna delle quali contiene la rappresentazione testuale degli elementi del vettore), quindi dovrebbe essere un JScrollPane, giusto? Ho trovato un po' di codice, che ho rielaborato, per un pannello singolo, ma non funziona su stack overflow (non voglio fare spam, ma vorrei semplicemente mettere un link al topic in cui si trova il codice originale, lo farò nel prossimo post se mi autorizzate)
Ho già effettuato la modifica che prevede di aggiungere il panel allo scrollPane ogni volta che aggiungo un oggetto. static JFrame frame = new JFrame(); static JPanel panel = new JPanel(); static JPanel contentPane = new JPanel(null); static JScrollPane scrollPane; public static void main (String [] args) { for (int i = 1; i < 30; i++) { JButton button = new JButton("Hello "+i); panel.getX(); button.setBounds(10, i * 30 + 10, 100, 25); /** button.setAlignmentX(10); button.setAlignmentY(i * 30 + 10); */ JLabel label = new JLabel("Hello "+i); panel.add(button); panel.add(label); contentPane.add(button); //Se aggiungo il bottone al contentPane, mi rimane fuori dall'area di scroll //panel.addContainerGap(); } scrollPane = new JScrollPane(panel); scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); scrollPane.setBounds(20, 30, 300, 50); contentPane.setPreferredSize(new Dimension (500, 400)); contentPane.add(scrollPane); frame.setContentPane(contentPane); frame.pack(); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setVisible(true); } Invio in allegato l'immagine che rappresenta più o meno che vorrei ottenere : l'ho ottenuta montando due immagini, una della finestra di netBeans e l'altra di bottoni a caso che vorrei inserire nel Panel di sotto, che rappresenta semplicemente un Panel di dimensione fissa che contiene un numero fisso di elementi, chiaramente al netto nei colori, il verdino chiaro improbabile è stato scelto per distinguere i due pannelli. Come vedete il pannello superiore ha la barra di scorrimento laterale e sotto, mentre non mi interessa nel pannello di sotto. Si può fare quello che chiedo io in Java? Come dovrei riscrivere il codice? Oppure non si può e dovrei utilizzare un altro linguaggio di programmazione? Se dovessi cambiare linguaggio di programmazione dovrei riscrivere tutto il programma (tranne forse in C #, perché molte cose sono identiche). Se serve richiamare librerie esterne non ci sono problemi. In alternativa ci sarebbero delle altre soluzioni, bisognerebbe trovare un componente che fa andare a capo e magari un componente che funge da separatore orizzontale, tempo fa forse l'avevo trovato, ma non avendolo mai utilizzato non me lo ricordo più e non avevo mai verificato. (PS ho dovuto comprimere l'immagine 3 volte per caricarla ![]()
__________________
NEW : Java problema pannello con barra scorrimentonew :Insert pag paypal PHP Basi x notebook cinesi Cerco notebook HP PHP problemi formattazione pagina SELECT Query PHP problem Problema Redirect PHP Project wi-fi Cerco PC C# Dictionary problem |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2010
Messaggi: 1710
|
Up!
__________________
NEW : Java problema pannello con barra scorrimentonew :Insert pag paypal PHP Basi x notebook cinesi Cerco notebook HP PHP problemi formattazione pagina SELECT Query PHP problem Problema Redirect PHP Project wi-fi Cerco PC C# Dictionary problem |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Per caso intendevi una cosa del genere? (devi mettere questo codice in un file di nome Test.java):
Codice:
import java.util.*; import javax.swing.*; import java.awt.*; public class Test { public static void main (String [] args) { JFrame frame = new JFrame(); // Pannello con la scroll bar JPanel mainPanel = new JPanel(); mainPanel.setLayout (new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); for (int i = 1; i < 30; i++) { JButton button = new JButton("Hello "+i); mainPanel.add(button); JLabel label = new JLabel("Hello "+i); mainPanel.add(label); } frame.getContentPane().add(new JScrollPane(mainPanel), BorderLayout.CENTER); // Pannello senza scroll bar JPanel southPanel = new JPanel(); southPanel.add(new JLabel("Per caso Sottovento ha capito il tuo problema?")); southPanel.add(new JButton("Si")); southPanel.add(new JButton("No")); frame.getContentPane().add(southPanel, BorderLayout.SOUTH); frame.setSize(new Dimension(400, 400)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:33.