#java #swing #components #paint
#java #swing #Компоненты #Краски
Вопрос:
Я только что просмотрел исходный код из JSlider SourceCode и, если нашел, много repaint (), как и ожидалось, из-за шаблона шаблона. Но моя проблема в том, что я не нашел метод paint, который на самом деле рисует JSlider.
Кто-нибудь может объяснить мне, как будет нарисован этот компонент?
Ответ №1:
Компоненты Swing обычно отображаются связанным с ними классом пользовательского интерфейса. Класс пользовательского интерфейса специфичен для каждого внешнего вида. Вот как вы получаете «родной» интерфейс JSlider или даже пользовательский интерфейс на разных платформах. У каждого компонента Swing есть класс пользовательского интерфейса, у JSlider есть SliderUI, который имеет несколько разновидностей, таких как: MetalSliderUI, WindowsSliderUI и SynthSliderUI.
Вы не нашли метод paint в JSlider, потому что метод paint находится в родительском классе JComponent. Методы рисования JComponent (paint, paintComponent, repaint и т.д.) Выполняют некоторую настройку, Но затем делегируют работу классу пользовательского интерфейса, который предоставляется JSlider. Существует целая цепочка методов, которая выполняется в Swing для правильного рисования / определения размеров компонентов.
Если бы мы знали, что вы пытаетесь сделать, мы могли бы вам помочь.
Комментарии:
1. Я создал глупый мультислайдер на основе JPanel. Теперь мне было просто любопытно, как реализован собственный JSlider, но я не нашел метод paint. Я знаю, что если я создам собственный компонент, мне придется переопределить paintComponent (Graphics g ). Но посмотрим на эти материалы пользовательского интерфейса. спасибо