Java splitpane con scrollpane

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

Java splitpane con scrollpane

Messaggioda Dr_Berta » sabato 6 luglio 2019, 15:55

Ciao,
sto cercando di fare con Eclipse un piccolo programma in java.
Ho creato, usando una splitpane, due zone: a sinistra ho un albero dove inserisco delle informazioni; a destra per ogni dato vorrei creare una lista di 7 pannelli con lo scroll uno per ogni giorno della settimana in cui scrivere delle note.
Ho creato una classe per implementare il pannello giornaliero per le note.

Avete suggerimenti su come inserire nella parte destra una scrollpane con i pannelli giornalieri? La tecnica che ho utilizzato non funziona
Ecco il codice:
Codice: Seleziona tutto
/**
    * Initialize the contents of the frame.
    */
   private void initialize() {
      frmAgenda = new JFrame();
      frmAgenda.getContentPane().setFont(new Font("Dialog", Font.PLAIN, 10));
      frmAgenda.setTitle("AGENDA");
      frmAgenda.setBounds(100, 100, 650, 650);
      frmAgenda.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frmAgenda.getContentPane().setLayout(new BorderLayout(0, 0));
      
      JMenuBar menuBar = new JMenuBar();
      frmAgenda.getContentPane().add(menuBar, BorderLayout.NORTH);
      
      mnNew = new JMenu("New");
      menuBar.add(mnNew);
      
      mntmNewProgram = new JMenuItem("New Info");
      mnNew.add(mntmNewProgram);
      
      mnAdd = new JMenu("Add");
      menuBar.add(mnAdd);
      
      mntmAddWeek = new JMenuItem("Add Week");
      mnAdd.add(mntmAddWeek);

      JSplitPane splitPane = new JSplitPane();
      frmAgenda.getContentPane().add(splitPane, BorderLayout.CENTER);
      root = new DefaultMutableTreeNode("AGENDA");
      tree = new JTree(root);
      top = new DefaultMutableTreeNode("Info");
      root.add(top);
      DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
      model.reload(root); // notify changes to model
      tree.expandPath(tree.getSelectionPath());
      splitPane.setLeftComponent(tree);
      
// Qui iniziano i problemi
      JScrollPane sp = new JScrollPane();
      panel = new JPanel();
      panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
      panel.setBackground(Color.ORANGE);
      panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
      
      int i=0;
      while(i<8) {
         day = i+1;
         panel.add(new GroupPanel(i));
         i++;
      }
      sp.add(panel);
        splitPane.setRightComponent(sp);
       
        Dimension minimumSize = new Dimension(0, 0);
        tree.setMinimumSize(minimumSize);
        panel.setMinimumSize(minimumSize);
   
      ButtonAction ba = new ButtonAction();
      mntmNewProgram.addActionListener(ba);
      mntmAddWeek.addActionListener(ba);
      tree.addTreeSelectionListener(createSelectionListener());
   }
   
   @SuppressWarnings("serial")
   public class GroupPanel extends JPanel {
      private int index;
      public GroupPanel(int i) {
         this.index = i;
         this.setBackground(Color.ORANGE);
         this.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
          
           Box verticalBox_d1 = Box.createVerticalBox();
         
         Box verticalBox_4 = Box.createVerticalBox();
         verticalBox_d1.add(verticalBox_4);
         
         Box horizontalBox_2 = Box.createHorizontalBox();
         horizontalBox_2.setBackground(Color.ORANGE);
         verticalBox_4.add(horizontalBox_2);
         
         lblNewLabel_3 = new JLabel("Info");
         lblNewLabel_3.setBackground(Color.ORANGE);
         horizontalBox_2.add(lblNewLabel_3);
         
         Box horizontalBox = Box.createHorizontalBox();
         verticalBox_4.add(horizontalBox);
         
         Box verticalBox = Box.createVerticalBox();
         horizontalBox.add(verticalBox);
         
         JLabel lblNewLabel = new JLabel("Nota 1");
         lblNewLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
         lblNewLabel.setHorizontalAlignment(SwingConstants.LEFT);
         verticalBox.add(lblNewLabel);
         
         textField = new JTextField();
         textField.setFont(new Font("Dialog", Font.PLAIN, 10));
         textField.setAlignmentY(Component.TOP_ALIGNMENT);
         textField.setHorizontalAlignment(SwingConstants.LEFT);
         verticalBox.add(textField);
         textField.setColumns(15);
         
         Box verticalBox_1 = Box.createVerticalBox();
         horizontalBox.add(verticalBox_1);
         
         JLabel lblNewLabel_1 = new JLabel("Nota 2");
         lblNewLabel_1.setAlignmentX(Component.CENTER_ALIGNMENT);
         lblNewLabel_1.setHorizontalAlignment(SwingConstants.LEFT);
         verticalBox_1.add(lblNewLabel_1);
         
         textField_1 = new JTextField();
         textField_1.setFont(new Font("Dialog", Font.PLAIN, 10));
         textField_1.setAlignmentY(Component.TOP_ALIGNMENT);
         textField_1.setHorizontalAlignment(SwingConstants.LEFT);
         verticalBox_1.add(textField_1);
         textField_1.setColumns(15);
         
         Box verticalBox_2 = Box.createVerticalBox();
         horizontalBox.add(verticalBox_2);
         
         JLabel lblNewLabel_2 = new JLabel("Nota 3");
         lblNewLabel_2.setAlignmentX(Component.CENTER_ALIGNMENT);
         verticalBox_2.add(lblNewLabel_2);
         
         textField_2 = new JTextField();
         textField_2.setFont(new Font("Dialog", Font.PLAIN, 10));
         textField_2.setAlignmentY(Component.TOP_ALIGNMENT);
         verticalBox_2.add(textField_2);
         textField_2.setColumns(15);
         
         Box horizontalBox_3 = Box.createHorizontalBox();
         horizontalBox_3.setAlignmentY(Component.BOTTOM_ALIGNMENT);
         verticalBox_4.add(horizontalBox_3);
         
         Box verticalBox_5 = Box.createVerticalBox();
         verticalBox_5.setAlignmentX(Component.CENTER_ALIGNMENT);
         verticalBox_5.setAlignmentY(Component.BOTTOM_ALIGNMENT);
         horizontalBox_3.add(verticalBox_5);
         
         JLabel lblNewLabel_4 = new JLabel("Nota 4:");
         lblNewLabel_4.setVerticalAlignment(SwingConstants.BOTTOM);
         lblNewLabel_4.setHorizontalAlignment(SwingConstants.LEFT);
         lblNewLabel_4.setAlignmentY(Component.BOTTOM_ALIGNMENT);
         verticalBox_5.add(lblNewLabel_4);
         
         textField_3 = new JTextField();
         textField_3.setHorizontalAlignment(SwingConstants.CENTER);
         textField_3.setAlignmentX(Component.LEFT_ALIGNMENT);
         textField_3.setFont(new Font("Dialog", Font.PLAIN, 10));
         textField_3.setAlignmentY(Component.BOTTOM_ALIGNMENT);
         verticalBox_5.add(textField_3);
         textField_3.setColumns(10);
         
         Box verticalBox_3 = Box.createVerticalBox();
         verticalBox_d1.add(verticalBox_3);
         verticalBox_3.setBackground(Color.ORANGE);
         
         Box horizontalBox_1 = Box.createHorizontalBox();
         verticalBox_3.add(horizontalBox_1);
         
         JLabel lblData = new JLabel("Data: ");
         lblData.setAlignmentX(Component.CENTER_ALIGNMENT);
         horizontalBox_1.add(lblData);
         
         txtGgmmaaaa = new JTextField();
         horizontalBox_1.add(txtGgmmaaaa);
         txtGgmmaaaa.setText("gg/mm/aaaa");
         txtGgmmaaaa.setColumns(10);
         
         add(verticalBox_d1);       
       }
   }

Il codice sopra mi crea la splitpane, conle due zone a sinistra e a destra, ma a destra arriva solo fino a un pannello dentro alla scrollpane.
Non mi inserisce nel pannello gli 8 pannelli creati con la classe GroupPanel(i)
Dov'è che sbaglio?

Claudio
Ubuntu user #35116. Linux user #550996 - Il cervello è come un paracadute, funziona solo se si apre [Einstein]
Avatar utente
Dr_Berta
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1852
Iscrizione: luglio 2011
Località: Carpi (MO)
Desktop: Gnome fb + Cairo dock
Distribuzione: Ubuntu 18.04 x86_64 LTS

Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 1 ospite