是否可以将文本放在按钮中的图像上?

时间:2010-04-26 12:43:56

标签: java image swing text jbutton

我的按钮中有.jpg图像。我还想在图像上放置一些文字。我使用以下语法:

JButton btn = new JButton(label,icon);

但我没有看到按钮中的文字(只有图片)。我做错了什么?

5 个答案:

答案 0 :(得分:16)

我不知道为什么你没有看到文字和图标。默认情况下,文本应绘制在图标的右侧。

要在您使用的图标上显示文字:

JButton button = new JButton(...);
button.setHorizontalTextPosition(JButton.CENTER);
button.setVerticalTextPosition(JButton.CENTER);

答案 1 :(得分:3)

如果你想在任何swing组件中以任何方式玩,你可以很好地覆盖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 :(得分:3)

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

这对我有用。

答案 3 :(得分:2)

您是尝试在图片顶部叠加文字还是仅将图片放在图片外? 在图像之外放置文本很容易,并且是@camickr提到的默认行为。 要将文本移至顶部,您可以:

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

另外,请注意只有.gif,.jpg和.png。将由ImageIcon

处理

答案 4 :(得分:2)

默认情况下,swing按钮的水平文本位置为SwingConstants.TRAILING,它会在图标后面绘制文本(想象一个复选框或单选按钮)。如果您希望文本以图标为中心,则只需设置按钮的水平文本位置:

JButton button = new JButton(label, icon);
button.setHorizontalTextPosition(SwingConstants.CENTER);