Swing в Java является частью базового класса Java, который является независимым от платформы. Он используется для создания оконных приложений и включает в себя такие компоненты, как кнопка, полоса прокрутки, текстовое поле и т. д.
Объединение всех этих компонентов создает графический интерфейс пользователя.
Что такое Swing в Java?
Swing в Java – это легкий инструментарий с графическим интерфейсом, который имеет широкий спектр виджетов для создания оптимизированных оконных приложений. Это часть JFC (Java Foundation Classes). Он построен на основе AWT API и полностью написан на Java. Он не зависит от платформы в отличие от AWT и имеет легкие компоненты.
Создавать приложения становится проще, поскольку у нас уже есть компоненты GUI, такие как кнопка, флажок и т. д.
Контейнерный класс
Любой класс, в котором есть другие компоненты, называется контейнерным классом. Для создания приложений с графическим интерфейсом необходим как минимум один класс контейнеров.
Уроки Java для начинающих | #23 — GUI Java (Swing JFrame)
Ниже приведены три типа контейнерных классов:
- Панель – используется для организации компонентов в окне.
- Рамка – полностью функционирующее окно со значками и заголовками.
- Диалог – это как всплывающее окно, но не полностью функциональное, как рамка.
Разница между AWT и Swing
Иерархия
Объяснение: Все компоненты в свинге, такие как JButton, JComboBox, JList, JLabel, унаследованы от класса JComponent, который можно добавить в классы контейнера.
Контейнеры – это окна, такие как рамка и диалоговые окна. Основные компоненты являются строительными блоками любого графического приложения. Такие методы, как setLayout, переопределяют макет по умолчанию в каждом контейнере. Контейнеры, такие как JFrame и JDialog, могут добавлять только компонент к себе. Ниже приведены несколько компонентов с примерами, чтобы понять, как мы можем их использовать.
JButton Class
Он используется для создания помеченной кнопки. Использование ActionListener приведет к некоторым действиям при нажатии кнопки. Он наследует класс AbstractButton и не зависит от платформы.
import javax.swing.*; public class example < public static void main(String args[]) < JFrame a = new JFrame(«example»); JButton b = new JButton(«click me»); b.setBounds(40,90,85,20); a.add(b); a.setSize(300,300); a.setLayout(null); a.setVisible(true); >>
JTextField Class
Он наследует класс JTextComponent и используется для редактирования однострочного текста.
import javax.swing.*; public class example < public static void main(String args[]) < JFrame a = new JFrame(«example»); JTextField b = new JTextField(«edureka»); b.setBounds(50,100,200,30); a.add(b); a.setSize(300,300); a.setLayout(null); a.setVisible(true); >>
Java swing: Компонент JPanel (панель). урок 6!
JScrollBar Class
Он используется для добавления полосы прокрутки, как горизонтальной, так и вертикальной.
import javax.swing.*; class example < example()< JFrame a = new JFrame(«example»); JScrollBar b = new JScrollBar(); b.setBounds(90,90,40,90); a.add(b); a.setSize(300,300); a.setLayout(null); a.setVisible(true); >public static void main(String args[]) < new example(); >>
JPanel Class
Он наследует класс JComponent и предоставляет пространство для приложения, которое может присоединить любой другой компонент.
import java.awt.*; import javax.swing.*; public class Example < Example()< JFrame a = new JFrame(«example»); JPanel p = new JPanel(); p.setBounds(40,70,200,200); JButton b = new JButton(«click me»); b.setBounds(60,50,80,40); p.add(b); a.add(p); a.setSize(400,400); a.setLayout(null); a.setVisible(true); >public static void main(String args[]) < new Example(); >>
JMenu Class
Он наследует класс JMenuItem и является компонентом выпадающего меню, которое отображается из строки меню.
import javax.swing.*; class Example < JMenu menu; JMenuItem a1,a2; Example() < JFrame a = new JFrame(«Example»); menu = new JMenu(«options»); JMenuBar m1 = new JMenuBar(); a1 = new JMenuItem(«example»); a2 = new JMenuItem(«example1»); menu.add(a1); menu.add(a2); m1.add(menu); a.setJMenuBar(m1); a.setSize(400,400); a.setLayout(null); a.setVisible(true); >public static void main(String args[]) < new Example(); >>
Вывод:
Класс JList
Он наследует класс JComponent, объект класса JList представляет список текстовых элементов.
import javax.swing.*; public class Example < Example()< JFrame a = new JFrame(«example»); DefaultListModell = new DefaultListModel< >(); l.addElement(«first item»); l.addElement(«second item»); JList b = new JList< >(l); b.setBounds(100,100,75,75); a.add(b); a.setSize(400,400); a.setVisible(true); a.setLayout(null); > public static void main(String args[]) < new Example(); >>
Вывод:
JLabel Class
Используется для размещения текста в контейнере. Он также наследует класс JComponent.
import javax.swing.*; public class Example < public static void main(String args[]) < JFrame a = new JFrame(«example»); JLabel b1; b1 = new JLabel(«edureka»); b1.setBounds(40,40,90,20); a.add(b1); a.setSize(400,400); a.setLayout(null); a.setVisible(true); >>
Вывод:
JComboBox Class
Он наследует класс JComponent и используется для отображения всплывающего меню выбора.
import javax.swing.*; public class Example< JFrame a; Example()< a = new JFrame(«example»); string courses[] = < «core java»,»advance java», «java servlet»>; JComboBox c = new JComboBox(courses); c.setBounds(40,40,90,20); a.add(c); a.setSize(400,400); a.setLayout(null); a.setVisible(true); > public static void main(String args[]) < new Example(); >>
Вывод:
Для размещения компонентов внутри контейнера мы используем менеджер макета. Ниже приведены несколько менеджеров макетов:
Макет границы
Менеджер по умолчанию для каждого JFrame – BorderLayout. Он размещает компоненты в пяти местах: сверху, снизу, слева, справа и по центру.
Макет потока
FlowLayout просто кладет компоненты в ряд один за другим, это менеджер компоновки по умолчанию для каждого JPanel.
GridBag Layout
GridBagLayout размещает компоненты в сетке, что позволяет компонентам охватывать более одной ячейки.
Пример: фрейм чата
import javax.swing.*; import java.awt.*; class Example < public static void main(String args[]) < JFrame frame = new JFrame(«Chat Frame»); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 400); JMenuBar ob = new JMenuBar(); JMenu ob1 = new JMenu(«FILE»); JMenu ob2 = new JMenu(«Help»); ob.add(ob1); ob.add(ob2); JMenuItem m11 = new JMenuItem(«Open»); JMenuItem m22 = new JMenuItem(«Save as»); ob1.add(m11); ob1.add(m22); JPanel panel = new JPanel(); // the panel is not visible in output JLabel label = new JLabel(«Enter Text»); JTextField tf = new JTextField(10); // accepts upto 10 characters JButton send = new JButton(«Send»); JButton reset = new JButton(«Reset»); panel.add(label); // Components Added using Flow Layout panel.add(label); // Components Added using Flow Layout panel.add(tf); panel.add(send); panel.add(reset); JTextArea ta = new JTextArea(); frame.getContentPane().add(BorderLayout.SOUTH, panel); frame.getContentPane().add(BorderLayout.NORTH, tf); frame.getContentPane().add(BorderLayout.CENTER, ta); frame.setVisible(true); >>
Это простой пример создания GUI с использованием Swing в Java.
Средняя оценка 4.7 / 5. Количество голосов: 132
Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.
Или поделись статьей
Видим, что вы не нашли ответ на свой вопрос.
Помогите улучшить статью.
Напишите комментарий, что можно добавить к статье, какой информации не хватает.
Источник: hr-vector.com
МИР ПЕРИФЕРИЙНЫХ УСТРОЙСТВ ПК
Внешние интерфейсы TFT панелей. Часть III. RSDS.
В последних номерах прошлого года мы начали публикацию обзора внешних интерфейсов TFT-панелей. А так как эта тема является достаточно обширной, то пришлось данный обзор разбить на несколько частей. Последнюю – третью часть мы и представляем вашему вниманию. В этой части речь пойдет об интерфейсе RSDS, который хотя и крайне редко, но все же используется для передачи данных на LCD-матрицу.
Так как первые две части обзора были опубликованы в прошлом году, напомним нашим читателям, о чем в них говорилось.
Итак, на LCD-матрицу необходимо передать информацию о цвете каждой экранной точки, а также сигналы строчной и кадровой синхронизации. Информация о цвете предается в цифровом виде, при этом каждой точке соответствует либо 18-разрядный, либо 24-разрядный цифровой код.
Как известно, любой цвет представляется комбинацией трех основных цветов (красного, зеленого и синего), и каждый из этих трех цветов описывается либо 6-битным кодом (поэтому и получается 18-разрядный цветовой поток: 3 цвета по 6 бит), либо 8-битным кодом (поэтому и получается 24-разрядный цветовой поток: 3 цвета по 8 бит). Интерфейс, по которому передается информация о цвете, должен быть скоростным, т.к. через него передается очень большой объем данных. Ведь для каждой экранной точки необходимо передать до 24 бит, а, например, при разрешении 1280х1024 таких экранных точек более 1.3 миллиона. Причем весь этот объем данных (1.3 миллиона по 24 бита) необходимо передавать 60 раз в секунду.
На сегодняшний день существует несколько способов (несколько интерфейсов) соединения ЖК-панели с главной платой микропроцессора:
— параллельный цифровой интерфейс;
За исключением первого в приведенном списке, все остальные интерфейсы являются последовательными, что позволяет повысить длину кабельного соединения, и, в конечном счете, увеличить скорость передачи данных. Кроме того, необходимо отметить, что все эти последовательные интерфейсы используют для передачи данных дифференциальные линии (пары), что позволяет улучшить помехозащищенность интерфейса.
И если интерфейсы TMDS и LVDS очень похожи между собой, и их различия можно считать, в большей степени, техническими, то интерфейс RSDS отличается от них достаточно существенно.
Прежде чем переходить к обсуждению технических деталей интерфейса RSDS, необходимо отметить его «стратегические» отличия от рассмотренных ранее интерфейсов и понять отличия в архитектуре всего LCD-монитора, возникающие при использовании RSDS.
Во-первых, вспомним, что непосредственное управление жидкокристаллическими (ЖК) ячейками осуществляют микросхемы столбцовых драйверов и строковых драйверов. Столбцовые драйверы осуществляют преобразование цифрового кода в аналоговое напряжение, прикладываемое к ЖК-ячейке. Эти аналоговые напряжения прикладываются поочередно к каждому столбцу ЖК-ячеек, в результате чего точки каждой строки поочередно засвечиваются одна за другой. Назначением строковых драйверов является поочередное перебирание строк, в результате чего обеспечивается построчный вывод изображения.
Управление столбцовыми и строковыми драйверами осуществляется микросхемой контроллера синхронизации — Timing Controller, традиционно обозначаемую TCON . Основной функцией этого контроллера является преобразование сигналов, сформированных на выходе скалера, в сигналы управления строковыми и столбцовыми драйверами. Физически, контроллер TCON, традиционно, располагается непосредственно на LCD-панели, поближе к драйверам строк и столбцов.
Именно для передачи данных от скалера на TCON и используются такие интерфейсы, как параллельный цифровой интерфейс, интерфейс TMDS и интерфейс LVDS (рис.1). Но передать данные на TCON – это только полдела. Цветовые данные (18-разрядный или 24-разрядный поток) должны быть в итоге переданы на микросхемы столбцовых драйверов, где и будут преобразованы в аналоговое напряжение.
От контроллера TCON на столбцовые драйверы цветовые данные передаются с помощью другого интерфейса – чаще всего интерфейса RSDS. Таким образом, RSDS является внутренним интерфейсом LCD-панели. Но это в классическом варианте.
Рис.1 Классическая архитектура современных TFT-матриц
Существует и другой взгляд на схемотехнику LCD-мониторов. Этот взгляд подразумевает размещение контроллера TCON на основной плате монитора, т.е. вне LCD-панели (рис.2). При этом на LCD-панели остаются только столбцовые и строковые драйверы. Подобное решение имеет как недостатки, так и определенные преимущества, в частности:
— уменьшение количества преобразований сигналов (из параллельного вида в последовательный, и наоборот – см. первые две части данной статьи);
— упрощение схемотехники и снижение стоимости LCD-панели.
Рис.2 Архитектура TFT-монитора при размещении TCON на основной плате
Так как TCON находится теперь на основной плате, то естественно, что интерфейсом, связывающим основную плату с LCD-панелью, становится RSDS , хотя необходимо отметить, что на интерфейсе должны еще присутствовать и другие сигналы управления столбцовыми и строковыми драйверами. Необходимо отметить, что контроллер TCON практически всегда интегрирован со скалером, т.е. на основной плате монитора располагается всего один сверхбольшой чип, называемый скалером со встроенным TCON (рис.3). Естественно, что в таком варианте, диагностика скалера заключается в контроле на его выходе сигналов интерфейса RSDS.
Рис.3 В современной схемотехнике возможно объединение скалера и TCON в одном чипе
Обзор интерфейса RSDS
Интерфейс RSDS , разработан фирмой National Semiconductor Corp., и зарегистрирован как ее торговая марка.
Аббревиатура RSDS ( Reduced Swing Differential Signaling ) переводится как: дифференциальные сигналы с уменьшенным размахом. Стандарт RSDS описывает характеристики передатчиков (трансмиттеров – Transmitter) и приемников (ресиверов – Receiver ), а также описывает протокол передачи данных от чипа к чипу. Особое внимание следует обратить на то, что стандартом RSDS описываются электрические характеристики и протоколы передачи только по линиям данных. Дополнительные управляющие сигналы, использующиеся для управления столбцовыми и строчными драйверами, этим стандартом не регламентируются и не описываются, т.к. все подобные сигналы являются уникальными для каждого типа драйверов и разрабатываются производителями LCD-панелей и производителями драйверов. Таким образом, стандартом RSDS рассматривается только шина данных между контроллером TCON и столбцовыми драйверами, по которой передаются данные для управления цветом каждой ячейки LCD.
К особенностям и преимуществам шины RSDS можно отнести:
1) Высокая пропускная способность, что позволяет значительно увеличивать разрешающую способность LCD-панели.
2) Обеспечение высококачественного подавления помех при передаче данных, что приводит к значительному улучшению качества изображения на LCD-панели.
3) Снижение динамической мощности, рассеиваемой на элементах системы, использующей интерфейс RSDS. Это позволяет упростить конструкцию LCD-панели за счет более простых решений по теплоотводу, а также увеличить время работы LCD-панели.
4) Снижение уровня высокочастотных электромагнитных излучений, генерируемых электронными компонентами LCD-панели. Это дает значительный выигрыш в плане обеспечения безопасности пользователя при работе с LCD-мониторами.
Интерфейс RSDS разрабатывался с намерениями использовать его в панелях с разрешениями, начиная от стандартов VGA и UXGA и выше. Шина RSDS является масштабируемой, т.е. увеличением количества дифференциальных пар шины можно значительно повысить ее разрядность. Такое масштабирование шины позволяет практически неограниченно повышать разрешающую способность LCD-панели.
Ограничение разрешающей способности будет вызвано лишь ограничениями полосы пропускания приемников и передатчиков интерфейса RSDS. В отличие от интерфейса LVDS, где размах сигналов составляет от 250 до 400 мВ , в интерфейсе RSDS используется размах сигналов в 200 мВ. Такое уменьшение сигналов предусмотрено для снижения мощности, однако это снижение приводит к ограничениям сферы использования интерфейса – его целесообразно использовать в том случае, если между основной платой дисплея и LCD-панелью незначительное расстояние.
Шина RSDS расположена между контроллером TCON и столбцовыми драйверами. Интерфейс RSDS обычно включает в себя либо 9 дифференциальных пар (при 6-битном кодировании каждого цвета), либо 12 дифференциальных пар (при 8-битном кодировании цвета). Кроме того, архитектура шины RSDS подразумевает наличие одного передатчика ( Transmitter ) и множества приемников ( Receiver ), т.е. шина RSDS является многоточечной (рис.4). Пожалуй, основным элементом интерфейса RSDS является трансмиттер. Рассмотрим его повнимательней.
Рис.4 Шина RSDS является многоточечной
Характеристики трансмиттера RSDS
Трансмиттер RSDS содержит два комплиментарных (тотемных) выхода, нагрузкой которых является шина данных. Дифференциальный сигнал генерируется двумя несимметричными (заземленными) выходами, путем их периодического переключения между источником постоянного тока и его «землей».
Дифференциальный сигнал является результатом протекания постоянного тока через нагрузочный резистор, называемый терминатором. Сопротивление терминатора в идеале должно составлять 100 Ом . Терминатор должен обязательно подключаться между двумя линиями одной дифференциальной пары. Каждый элемент, подключаемый к шине, не должен нарушать баланс дифференциальной пары, созданный терминатором. Другими словами, к выходу трансмиттера должна быть всегда подключена нагрузка с суммарным сопротивлением 100 Ом – это позволит обеспечить оптимальную работу интерфейса и предотвращать такие явления в шине, как отражение сигналов, перегрузку, недогрузку, закольцовывание.
На практике зачастую можно столкнуться с тем, что сопротивление подключаемых к шине элементов различно и находится в диапазоне от 25 Ом до 100 Ом , т.е. таким образом нарушается условие согласования нагрузки, что и приводит к эффектам, перечисленным в предыдущем абзаце. Для правильной работы интерфейса в этом случае разработчики системы должны настроить параметры трансмиттера на работу с нагрузкой, имеющей минимальное сопротивление.
Основные электрические характеристики трансмиттера RSDS приводятся в табл.1. На рис.5 поясняется формирование дифференциального напряжения.
Таблица 1. Электрические параметры трансмиттера RSDS
Источник: www.mirpu.ru
# 40 Получение линейных выходов (line-out) на Swing
Итак, что понадобиться
Танталовые конденсаторы 22мкф 16 вольт — 4 шт — 120 руб
Провод монтажный, но лучше взять коаксиал ~ 30 см. взял 10 метров 0,5 мм2 )) — 100 руб
RCA разъем (тюльпан мама) — 4 шт — 200 руб
Термоусадка ~ 10 см — 20 руб
Итак разбираем ГУ, всё собрано на звездочках, странно, что Торх из моего набора не подошел, пришлось одолжить нужный инструмент у соседей ))
Полный размер
Общий вид Delphi 5J0 035 161 E
Полный размер
Общий вид без верхней крышки
Полный размер
Общий вид, CD демонтирован
Полный размер
Микросхема УНЧ которую необходимо обойти
Погуглив пришел к выводу, что Микросхема УНЧ ST 09395699 есть тоже самое, что TDA7561 / TDA7564B далее пользовался даташитом (Datasheet) от TDA 7561.
Распиновка УНЧ
Из схемы видно, что нас интересуют 11,12,14,15 каналы, ищем их на плате, целесообразно впаяться между фильтром и УНЧ. Места пайки я обозначил красными кругами.
Полный размер
Сигнал на линйку берем с красных кругов
Перед самой выпайкой, чтоб ничего не мешало, на задней стенке сверлим 4 отверстия, под мой размер RCA понадобилось 8-ое сверло.
Полный размер
Готовые отверстия под RCA- вид сзади
Полный размер
Готовые отверстия под RCA- вид изнутри
Собираем сами RCA, припаиваем к ним провода, и вставляем в корпус… Минус так же взят с корпуса, поэтому и выпаиваем по одному + с каждого канала.
Полный размер
Собираем RCA
Полный размер
Прикручиваем разъемы к корпусу
Ну и самое сложное, что осталось, это аккуратно впаяться в плату…
Полный размер
Всё впаяно, всё круто ))
Полный размер
Готовые и подписанные выходы
Полный размер
ГУ без лицевой панели, места там навалом
С модернизацией всё закончили, всё отлично… осталось дело за малым найти rem для уся…
Поскольку изначально Swing был подключен в усилитель по HI-IN, необходимости в этом не было… Из Китайского ГУ торчал отдельный провод, ну а тут надо, что-то делать… Как и многие решил взять + с магнитолы с выхода на CD ченжер — Синяя фишка, через которую подключен MDI (AUX, USB) Теперь усь включается и выключается вместе с магнитолой. но из-за этого слышен хлопок в динамиках… на мой взгляд, сначала должно включаться ГУ, а уже потом усь, а здесь всё сразу… Возможно позже доработаю, как начнет бесить…
Полный размер
Вот сюда подключаем REM
Итог:
Имеем штатное ГУ с линейкой, которое звучит в разы лучше, нежели подключение к усилителю через Hi-IN, с преобразователями сигнала, думаю сравнивать не стоит — не побывал.
Что же стало после переделки, пропала регулировка — баланс перед зад, осталась только лево, право. — лично мне не надо, не пользуюсь.
Звук — середина и высокие стали чище и приятнее — появились инструменты, НЧ — явно не хватает.
Сейчас стоит настройка от Superb на днях попробую поставить прямую, без обработки, и покрутить усилитель, возможно получиться добиться более лучше эффекта с низами.
P/S/ Никаких наводок и помех нет!
Если кому интересно, по возвращению китайской платы, по разумной цене готов отдать — ЭТО! 🙂
Всем уц уц и дыц дыц ))
Источник: www.drive2.ru