7

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

JButton btn = new JButton(label,icon);

但我没有在按钮中看到文字(只有图像)。我究竟做错了什么?

4

5 回答 5

18

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

要在您使用的图标顶部显示文本:

JButton button = new JButton(...);
button.setHorizontalTextPosition(JButton.CENTER);
button.setVerticalTextPosition(JButton.CENTER);
于 2010-04-26T15:31:07.920 回答
3

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

这对我有用。

于 2013-09-24T15:47:11.320 回答
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
        }
    }
}
于 2010-04-26T17:58:30.443 回答
2

默认情况下,swing 按钮的水平文本位置为SwingConstants.TRAILING,它将在图标之后绘制文本(想想复选框或单选按钮)。如果您希望文本居中在图标上,您只需要设置按钮的水平文本位置:

JButton button = new JButton(label, icon);
button.setHorizontalTextPosition(SwingConstants.CENTER);
于 2010-04-26T17:51:20.960 回答
2

您是要在图像顶部覆盖文本还是仅将文本放置在图像之外?将文本定位在图像之外很容易,并且是@camickr 提到的默认行为。要将文本移到顶部,您可以:

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

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

于 2010-04-26T15:47:01.027 回答