Создание собственного JButton в Java
Да, это возможно. Одним из java-swing основных преимуществ использования java Swing является простота создания core-java абстрактных элементов управления javax.swing и управления ими.
Вот быстрый javax.swing и грязный способ расширить swing существующий класс JButton, чтобы core-java нарисовать круг справа от core-java текста.
package test;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import javax.swing.JButton;
import javax.swing.JFrame;
public class MyButton extends JButton {
private static final long serialVersionUID = 1L;
private Color circleColor = Color.BLACK;
public MyButton(String label) {
super(label);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension originalSize = super.getPreferredSize();
int gap = (int) (originalSize.height * 0.2);
int x = originalSize.width + gap;
int y = gap;
int diameter = originalSize.height - (gap * 2);
g.setColor(circleColor);
g.fillOval(x, y, diameter, diameter);
}
@Override
public Dimension getPreferredSize() {
Dimension size = super.getPreferredSize();
size.width += size.height;
return size;
}
/*Test the button*/
public static void main(String[] args) {
MyButton button = new MyButton("Hello, World!");
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
Container contentPane = frame.getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(button);
frame.setVisible(true);
}
}
Обратите внимание, что java при переопределении paintComponent содержимое javax кнопки может быть изменено, но javax граница рисуется методом javax.swing paintBorder. Метод getPreferredSize также требует управления jre для динамической поддержки java изменений содержимого. Необходимо swing соблюдать осторожность при openjdk измерении показателей шрифта javax и размеров изображения.
Для java-api создания элемента управления, на java-libraries который можно положиться, приведенный javax.swing выше код не является правильным .java подходом. Размеры и цвета jre в Swing являются динамическими openjdk и зависят от используемого jbutton внешнего вида. Даже внешний javax.swing вид Metal по умолчанию изменился java-api в версиях JRE. Было бы лучше jbutton реализовать AbstractButton и соответствовать java рекомендациям, установленным jbutton API Swing. Хорошей отправной swing точкой является рассмотрение .java классов javax.swing.LookAndFeel и javax.swing.UIManager.
http://docs.oracle.com/javase/8/docs/api/javax/swing/LookAndFeel.html
http://docs.oracle.com/javase/8/docs/api/javax/swing/UIManager.html
Понимание анатомии jre LookAndFeel полезно для написания core-java элементов управления: Creating a Custom Look and Feel
java
swing
jbutton
Создание собственного JButton в Java
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.