我的按钮中有.jpg图像。我还想在图像上放置一些文字。我使用以下语法:
JButton btn = new JButton(label,icon);
但我没有看到按钮中的文字(只有图片)。我做错了什么?
答案 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);