предложения по разработке JFrame

1

Я проектирую Jframe, используя netbeans. У меня мало вопросов.

  1. Можем ли мы создать метку для поля в нужном месте (например, у нас есть поле с именем height, мне нужно отобразить метку ниже, указывающую высоту в см) условно?
  2. Можем ли мы отключить поле, основанное на условии? (При отключении я имею в виду, что он не должен отображаться в моем кадре)

Может ли кто-нибудь предложить мне, можем ли мы их достичь с помощью некоторых примеров.

Пробовал это, после некоторых полезных предложений

 private void englishRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                   
        // TODO add your handling code here:
        JLabel userlabel;
        if (englishRadioButton.isSelected())
                {
                    userlabel = new JLabel("Inches");
                    userlabel.setBounds(311, 59, 64, 36);
                    //userlabel.setLocation(307,55);
                    //userlabel.setSize(70,40);
                    userlabel.setForeground(Color.green);
                    userlabel.setText("Inches");
                    userlabel.setVisible(true);
                    System.out.println(englishRadioButton.getBounds());
                    inchesTextField.setVisible(true);
                }
    }        

Текстовое поле отображается только при нажатии на английский переключатель, в то же время мне нужно получить ярлык, но он не отображается с указанным выше кодом. Могу ли я узнать, где я ошибаюсь?

См. Прилагаемые скриншоты Изображение 174551Изображение 174551

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

Благодарю!!

Теги:
swing

1 ответ

4
Лучший ответ
  1. Да, относительное размещение компонентов легко достигается с помощью менеджеров компоновки.
  2. Да, все компоненты имеют setEnabled(...) и метод setVisible(...) любой из которых можно вызвать в любой момент во время прогона программы. Первый помогает вам активировать/деактивировать компоненты, а последний помогает сделать их видимыми/невидимыми. Если вы хотите поменять полные "взгляды", используйте CardLayout.

Что касается:

Может ли кто-нибудь предложить мне, можем ли мы их достичь с помощью некоторых примеров.

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

Для ссылок, пожалуйста, смотрите здесь: Swing Tag Info.


редактировать
Ты спрашиваешь:

Я попробовал вышеуказанный код, условно отключив текстовое поле, хорошо работает, но получение метки не работает. Можете ли вы предложить это?

Я не вижу, чтобы вы добавляли свой JLabel к любому компоненту. Если вы собираетесь создать компонент в событии, вы должны добавить его к компоненту, чья иерархия предков в конечном итоге достигает видимого компонента верхнего уровня, такого как JFrame. Затем, добавив компонент в контейнер (скажем, JFrame), вы должны вызвать revalidate() в контейнере, чтобы его менеджеры макета повторно разметали его компоненты, а затем repaint() чтобы перерисовать любые "грязные" пиксели.

Я снова повторю, что вам намного лучше не использовать нулевой макет и абсолютное позиционирование, а скорее использовать менеджеры макетов и относительное позиционирование. Если вам нужен ярлык с видимым текстом и без него, лучше всего добавить пустую JLabel в GUI для создания GUI и просто установить его текст, когда это необходимо, если метка расположена где-то, что позволяет его текст сжиматься и расширяться,

Кроме того, что касается вашей текущей проблемы, вы можете показать картину того, что вы пытаетесь достичь, и то, что вы получаете. Или если вы не можете опубликовать изображение здесь, разместите ссылку на изображение или изображения, которые вы создали, а затем опубликуем их для вас.

  • 0
    Мне удалось условно отключить поле с помощью метода setVisible. Но я не могу добавить метку к текстовому полю условно. Попытка, как это, создала новый объект метки и установила его местоположение и размер, используя setLocation и setSize. Но я не вижу метку нигде в кадре, когда я запускаю свое приложение. Могу ли я знать, где я делаю неправильно?
  • 0
    @Sandy: Лучше всего избегать абсолютного позиционирования через setSize, setLocation или setBounds. Лучше всего использовать менеджеры компоновки для достижения наилучшего относительного положения, чтобы ваш графический интерфейс хорошо работал на всех платформах. Для получения более конкретной помощи, пожалуйста, создайте и опубликуйте минимальный пример программы (пожалуйста, проверьте ссылку), а затем отправьте мне комментарий, чтобы я знал, что это сделано.
Показать ещё 13 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню