sql >> Databasteknik >  >> RDS >> Mysql

ScrollPane läggs till i rutnätslayout

Börja med att lägga till knapparna i sin egen behållare, på så sätt kan du styra layouten på knapparna separat från resten av användargränssnittet

    JPanel panelFullOfButtons = new JPanel();
    try {
        for (int i = 0; i < projectNames.length; i++) {
            buttons[i] = new ProjectButton(projectNames[i]);
            buttons[i].setId(uniqueIds[i]);

            panelFullOfButtons.add(buttons[i]);
            buttons[i].addActionListener(this);

        }
    } catch (Exception e2) {
        JOptionPane.showMessageDialog(null, e2);
    }

Lägg sedan till "huvud"-panelen i NORTH positionen för ramen och panelen "knappar" till CENTER

    frame.add(panel, BorderLayout.NORTH);
    frame.add(new JScrollPane(panelFullOfButtons), BorderLayout.CENTER);

Kom ihåg att i det här fallet skulle jag vara väldigt frestad att använda något som en JList istället. Se Hur man använder listor för mer information

// Problem #1...
JScrollPane pane = new JScrollPane();
pane.add(buttonPanel);

//...
// Problem #2...
panel.add(pane);
frame.add(panel);

Dessa konkurrerar med varandra, flyttar runt innehållet och överlappar befintligt innehåll...

public AdminClass() {

    panel.setLayout(new GridLayout(3, 1));

    panel.add(new JLabel("Welcome to Admin Panel"));

    btnNewButton.addActionListener(this);
    panel.add(btnNewButton);

    panel.add(new JLabel("Existing Projects"));

    List<String> projectNameList = new ArrayList<String>();
    for (int index = 0; index < 1000; index++) {
        projectNameList.add("Project " + index);
    }
    projectNames = projectNameList.toArray(new String[0]);

    // Adding buttons to the project
    buttons = new JButton[projectNameList.size()];
    try {
        for (int i = 0; i < projectNames.length; i++) {
            buttons[i] = new JButton(projectNames[i]);

            btnPnl1.add(buttons[i]);
            buttons[i].addActionListener(this);

        }
    } catch (Exception e2) {
        JOptionPane.showMessageDialog(null, e2);
    }

    frame.add(panel, BorderLayout.NORTH);
    frame.add(new JScrollPane(btnPnl1), BorderLayout.CENTER);

    frame.setVisible(true);
    frame.setSize(500, 500);

}

I det här fallet föredrar jag att använda antingen en JList för att visa projekten eller en WrapLayout för att lägga ut knapparna



  1. Konfigurationssystemet kunde inte initieras

  2. Ring upp flera lagrade procedurer med Zend Framework

  3. Hur väljer man med ett binärt fält? (php,mysql)

  4. Hur kör man ett SSIS-paket från .NET?