Один из способов достижения вашей цели - это подкласс UIpageControl
и переопределить свойство accessibiliTraits
следующим образом:
class MyPageControl: UIPageControl {
override var accessibilityTraits: UIAccessibilityTraits {
get{
return .none
}
set{}
}
}
Определить свой элемент pageControl как MyPageControl
, чтобы получить желаемый результат.
В GUI Netbeans, набор менеджер по расположению к чему-то как GridLayout или FlowLayout (только для тестирования). Можно сделать это путем движения к редактору GUI, нажатия на панель, и затем щелчка правой кнопкой и выбора расположения.
После того как Вы изменились на другое расположение, перейдите к свойствам и измените свойства макета. Для GridLayout Вы хотите удостовериться, что у Вас есть 3 ячейки сетки.
Вместо myPanel.validate (), попробуйте myPanel.revalidate ().
Более канонический способ сделать это должно создать пользовательский JPanel (не используя редактора GUI), который устанавливает его собственного менеджера по расположению, заполняет себя с компонентами, и т.д. Затем в редакторе GUI Netbeans перетащите тот пользовательский JPanel в gui редактора. Matisse, конечно, способен к обработке модификации во время выполнения компонентов Swing, но это не нормальный способ использовать ее.
Это было некоторое время, так как я сделал некоторый 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();
Ваш цикл с условием продолжения является неправильным. i
никогда не увеличивается так, Ваше создание окна находится в бесконечном цикле, и Ваше потребление ресурсов ЦП должно быть в 100%, пока Вы не прерываете программу. Кроме того, GUI должен быть абсолютно небыстро реагирующим, когда Вы запускаете свою программу.
Обычный способ использовать GroupLayout
должен добавить компонент к a Group
. GroupLayout
сохраняет ссылку на Container
это ответственно за (который имеет смысл). Вы не должны добавлять компонент к панели без ограничений.
Просто используйте метод .setVisible ()
JTextField:
JTextField tf = new JTextField() ;
tf.setVisible(true) ;
panel.add(tf) ;