Добавление JTextField к JPanel и показ их

Один из способов достижения вашей цели - это подкласс UIpageControl и переопределить свойство accessibiliTraits следующим образом:

class MyPageControl: UIPageControl {

    override var accessibilityTraits: UIAccessibilityTraits {
        get{
            return .none
        }
        set{}
    }
}

Определить свой элемент pageControl как MyPageControl, чтобы получить желаемый результат.

7
задан Davide Gualano 13 February 2009 в 14:50
поделиться

5 ответов

В GUI Netbeans, набор менеджер по расположению к чему-то как GridLayout или FlowLayout (только для тестирования). Можно сделать это путем движения к редактору GUI, нажатия на панель, и затем щелчка правой кнопкой и выбора расположения.

После того как Вы изменились на другое расположение, перейдите к свойствам и измените свойства макета. Для GridLayout Вы хотите удостовериться, что у Вас есть 3 ячейки сетки.

Вместо myPanel.validate (), попробуйте myPanel.revalidate ().

Более канонический способ сделать это должно создать пользовательский JPanel (не используя редактора GUI), который устанавливает его собственного менеджера по расположению, заполняет себя с компонентами, и т.д. Затем в редакторе GUI Netbeans перетащите тот пользовательский JPanel в gui редактора. Matisse, конечно, способен к обработке модификации во время выполнения компонентов Swing, но это не нормальный способ использовать ее.

6
ответ дан 7 December 2019 в 12:25
поделиться

Это было некоторое время, так как я сделал некоторый Swing, но я думаю, что необходимо будет вспомнить пакет () говорить кадр перерасположению его компоненты

Править: Да, я знал, что это было слишком длинно, так как я сделал Swing. Я поднял следующий код, который работает как ожидалось, хотя и добавляет текстовые поля...

    JFrame frame = new JFrame("My Frame");
    frame.setSize(640, 480);
    JPanel panel = new JPanel();
    panel.add(new JLabel("Hello"));
    frame.add(panel);
    frame.setLayout(new GridLayout());
    frame.pack();
    frame.setVisible(true);
    Vector textFieldVector = new Vector();
    JTextField tf;
    int i = 0;
    while (i < 3) {
        tf = new JTextField();
        textFieldVector.add(tf);
        panel.add(tf); //myPanel is the JPanel where I want to put the JTextFields
        i++;
    }
    panel.validate();
    panel.repaint();
2
ответ дан 7 December 2019 в 12:25
поделиться

Ваш цикл с условием продолжения является неправильным. i никогда не увеличивается так, Ваше создание окна находится в бесконечном цикле, и Ваше потребление ресурсов ЦП должно быть в 100%, пока Вы не прерываете программу. Кроме того, GUI должен быть абсолютно небыстро реагирующим, когда Вы запускаете свою программу.

0
ответ дан 7 December 2019 в 12:25
поделиться

Обычный способ использовать GroupLayout должен добавить компонент к a Group. GroupLayout сохраняет ссылку на Container это ответственно за (который имеет смысл). Вы не должны добавлять компонент к панели без ограничений.

0
ответ дан 7 December 2019 в 12:25
поделиться

Просто используйте метод .setVisible () JTextField:

JTextField tf = new JTextField() ;
tf.setVisible(true) ;
panel.add(tf) ;
-3
ответ дан 7 December 2019 в 12:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: