от
Есть ли способ, чтобы создать
JButton
с собственной кнопки графические, а не только с изображения внутри кнопки? Если нет, есть ли другой способ, чтобы создать пользовательский
JButton
в Java?

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

6 Ответы

0 голосов
от
Есть ли способ, чтобы создать
JButton
с собственной кнопки графические, а не только с изображения внутри кнопки? Если нет, есть ли другой способ, чтобы создать пользовательский
JButton
в Java?
0 голосов
от
Когда я только начинал изучать Java, который мы должны были сделать покер на костях-и я подумал, что было бы круто создавать пользовательские компоненты Swing и контейнеры, а не просто рисовать все на одном
JPanel
. Преимущества расширения компонентов
Swing
, конечно, есть возможность добавить поддержку горячих клавиш и другие функции универсального доступа, которые можно не только при наличии
paint()
способ печати красивая картинка. Это не может быть сделано лучшим образом, но это может быть хорошей отправной точкой для вас. Редактировать 8/6 - если это не видно из изображений, каждый умирает кнопка, вы можете нажать. Это будет двигать его к
DiceContainer
ниже. Глядя на исходный код вы можете увидеть, что каждая кнопка умирает динамически рисуется, исходя из его стоимости. Вот основные шаги: Создать класс, который расширяет
JComponent
Вызов родителей
super()
конструктор в конструкторы Убедитесь, что класс реализует
MouseListener
Положите это в конструкторе:
enableInputMethods(true);   
addMouseListener(this);
Переопределить эти методы:
public Dimension getPreferredSize()  
public Dimension getMinimumSize()  
public Dimension getMaximumSize()
Переопределите этот метод:
public void paintComponent(Graphics g)
Объем пространства, вы должны работать с при рисовании кнопки определяется
getPreferredSize()
, предполагая
getMinimumSize()
и
getMaximumSize()
возвращать одинаковое значение. Я не слишком много экспериментировали с этим, но, в зависимости от планировки, которую вы используете для кнопки интерфейс может выглядеть совершенно иначе. И, наконец, исходный код. В случае, если я что-то упустил.
0 голосов
от
Да, это возможно. Одним из основных преимуществ использования свинг-это легкость, с которой абстрактные элементы управления могут быть созданы и манипулирует. Вот быстрый и грязный способ расширить существующий класс jbutton для нарисуйте круг справа от текста.
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 

Обратите внимание, что путем переопределения paintComponent, что содержимое кнопки могут быть изменены, но это граница окрашенного методом paintBorder. В getpreferredsize метод также должен быть управляемым для того, чтобы динамически поддерживает изменения в содержание. Следует соблюдать осторожность при измерении метрик шрифта и размеры изображения.

Для создания элемента управления, который вы можете положиться, приведенный выше код не правильный подход. Размеры и цвета являются динамичными в качели и зависят от выглядеть и чувствовать себя используется. Даже по умолчанию металла вид изменился по версии JRE. Было бы лучше реализовать AbstractButton и соответствовать рекомендациям, изложенным качания API-интерфейс. Хорошая отправная точка должна смотреть на интерфейс javax.качели.Внешний вид и javax.качели.Класса 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

Понимание анатомии виду будет полезна для написания элементы управления:
Создание пользовательского выглядеть и чувствовать себя
0 голосов
от
Вы всегда можете попробовать синтезатор взгляд
0 голосов
от
Я, наверное, пойду миллион миль в прямой (но я только молодые :Р ). но не могли бы вы добавить рисунок на панели, а затем mouselistener для графического объекта так, что когда пользователь на графическом ваши действия-это таблетированная.
0 голосов
от
Я не делал развитию качания с ранних классов CS, но если он был построен не в можно просто наследовать
javax.swing.AbstractButton
и создавать свои собственные. Должно быть довольно просто провода что-то вместе с их существующей структуры.
...