Можно ли поместить текст поверх изображения в кнопке? - PullRequest
3 голосов
/ 26 апреля 2010

У меня есть кнопки .jpg в моих кнопках. Я также хотел бы поместить текст поверх изображений. Для этого я использую следующий синтаксис:

JButton btn = new JButton(label,icon);

Но я не вижу текста в кнопках (только изображение). Что я делаю не так?

Ответы [ 5 ]

16 голосов
/ 26 апреля 2010

Понятия не имею, почему вы не видите текст и значок. По умолчанию текст должен быть нарисован справа от значка.

Для отображения текста в верхней части значка, который вы используете:

JButton button = new JButton(...);
button.setHorizontalTextPosition(JButton.CENTER);
button.setVerticalTextPosition(JButton.CENTER);
3 голосов
/ 24 сентября 2013

JButton button = new JButton(text,icon); button.setVerticalTextPosition(SwingConstants.TOP); button.setHorizontalTextPosition(SwingConstants.CENTER);

Это сработало для меня.

3 голосов
/ 26 апреля 2010

Если вы хотите играть как угодно в любом компоненте свинга, вы можете очень хорошо переопределить метод paint (). Таким образом, вы можете делать все что угодно.

package test;

import java.awt.Graphics;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ButtonTest {
    public static void main(String[] args){
        new ButtonTest().test();
    }

    public void test(){
        JFrame frame = new JFrame("Biohazard");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel pnl = new JPanel();
        pnl.add(new MyButton());
        frame.add(pnl);
        frame.setSize(600, 600);
        frame.setVisible(true);
    }

    class MyButton extends JButton{
        public void paint(Graphics g){
            //anything you want
        }
    }
}
2 голосов
/ 26 апреля 2010

По умолчанию, кнопки поворота имеют горизонтальную текстовую позицию SwingConstants.TRAILING, которая будет рисовать текст после значка (например, флажок или переключатель). Если вы хотите, чтобы текст располагался по центру над значком, вам просто нужно установить горизонтальное положение текста кнопки:

JButton button = new JButton(label, icon);
button.setHorizontalTextPosition(SwingConstants.CENTER);
2 голосов
/ 26 апреля 2010

Вы пытаетесь наложить текст поверх изображения или просто расположить текст вне изображения? Позиционирование текста вне изображения является простым и является поведением по умолчанию, как упоминал @camickr. Чтобы переместить текст наверх, вы можете:

ImageIcon icon = new ImageIcon(pathToicon);
JButton myButton = new JButton("Press me!", icon);
myButton.setVerticalTextPosition(SwingContstants.TOP);

Кроме того, обратите внимание, что только .gif, .jpg и .png. будет обрабатываться ImageIcon

...