Где на самом деле будет нарисован JSlider?

#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 ). Но посмотрим на эти материалы пользовательского интерфейса. спасибо