Полоса прокрутки Java-апплета - PullRequest
0 голосов
/ 01 мая 2011

[Спасибо за ответы. Это приходит для вас http://www.youtube.com/watch?v=Vo0Cazxj_yc] Это может и должно быть очень простым вопросом, но я не смог найти решение.

У меня есть Java-апплет, и я хочу вертикальную полосу прокрутки, чтобы я мог загрузить тысячи кнопок в апплет и использовать полосу прокрутки, чтобы увидеть кнопки на апплете rightnow it looks like this.

Кнопки используются для выбора элементов. если кнопка нажата, элемент выбран.

Когда я загружаю кнопки, все они отображаются на одном экране, сжаты вместе, чтобы соответствовать экрану по ширине и высоте (~ 1000 пикселей, ~ 1000 пикселей). Ниже код является частью моей программы. Пожалуйста, прокомментируйте.

    JFrame frame = new JFrame();
    NameClassifier nameClassifier = new NameClassifier();
    JScrollPane scrollPane = new JScrollPane(nameClassifier);
     scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    frame.add(scrollPane);
    frame.getContentPane().add(nameClassifier);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
    System.out.println("exiting");

Ответы [ 3 ]

1 голос
/ 02 мая 2011

Я думаю, вы хотите использовать Wrap Layout .

1 голос
/ 02 мая 2011
import java.awt.*;
import javax.swing.*;

class ManyButtons {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame();
                NameClassifier nameClassifier = new NameClassifier();
                JScrollPane scrollPane = new JScrollPane(nameClassifier);
                scrollPane.setVerticalScrollBarPolicy(
                    ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
                frame.add(scrollPane);
                // nameClassifier has already been added to the scroll pane.
                //frame.getContentPane().add(nameClassifier);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.pack();
                frame.setVisible(true);
                System.out.println("exiting");
            }
        });
    }
}

class NameClassifier extends JPanel {

    NameClassifier() {
        super(new GridLayout(0,10,2,2));
        for (int ii=1; ii<=1000; ii++) {
            add(new JButton("Button " + ii));
        }
    }
}
0 голосов
/ 01 мая 2011

Не добавляйте ничего непосредственно в фрейм, поэтому

frame.add(scrollPane);

не так.

Добавьте элементы в панель содержимого.вероятно

scrollPane.add(nameClassifier);
frame.getContentPane().add(scrollPane);

кстати, это один симпатичный графический дизайн.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...