使用前景标签将图像添加到Jbutton

朋友们,我尝试使用seticon方法将图像添加到我的Jbutton,但它隐藏了按钮上的文本标签。 这是代码:

try { Image img = ImageIO.read(getClass().getResource("image.jpg")); studentsButton.setIcon(new ImageIcon(img)); } catch (IOException ex) { } 

我在没有init()/ paint()/ graphics的eclipse中使用swing,它在main方法中的简单框架。

简单地使用

 studentsButton.setHorizontalTextPosition(AbstractButton.CENTER); studentsButton.setVerticalTextPosition(AbstractButton.BOTTOM); 

这只是将文本放在图像下方。 输出将是这样的:

以下是您的帮助的一个代码示例 OUTPUT 作为输出:

 import java.awt.*; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import javax.swing.*; import javax.imageio.ImageIO; public class ButtonImageExample { private JButton imageButton; private ImageIcon image; private void displayGUI() { JFrame frame = new JFrame("Button Image Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel contentPane = new JPanel(); try { image = new ImageIcon(ImageIO.read( new URL("http://i.imgur.com/6mbHZRU.png"))); } catch(MalformedURLException mue) { mue.printStackTrace(); } catch(IOException ioe) { ioe.printStackTrace(); } imageButton = new JButton("Button Text"); imageButton.setIcon(image); imageButton.setHorizontalTextPosition(AbstractButton.CENTER); imageButton.setVerticalTextPosition(AbstractButton.BOTTOM); contentPane.add(imageButton); frame.setContentPane(contentPane); frame.pack(); frame.setLocationByPlatform(true); frame.setVisible(true); } public static void main(String... args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new ButtonImageExample().displayGUI(); } }); } } 

最新编辑:关于通过JLABEL添加背景图像

 import java.awt.*; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import javax.swing.*; import javax.imageio.ImageIO; public class ButtonImageExample { private ImageIcon image, imageForLabel; private JLabel imageLabel; private JTextField userField; private JPasswordField passField; private JButton loginButton; private void displayGUI() { JFrame frame = new JFrame("Button Image Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel contentPane = new JPanel(); contentPane.setLayout(new BorderLayout(5, 5)); try { image = new ImageIcon(ImageIO.read( new URL("http://i.imgur.com/jwyrvXC.gif"))); imageForLabel = new ImageIcon(ImageIO.read( new URL("http://i.imgur.com/09zgEvG.jpg"))); } catch(MalformedURLException mue) { mue.printStackTrace(); } catch(IOException ioe) { ioe.printStackTrace(); } imageLabel = new JLabel(imageForLabel); JPanel basePanel = new JPanel(); // setOpaque(false) is used to make the JPanel translucent/transparent. basePanel.setOpaque(false); basePanel.setLayout(new BorderLayout(5, 5)); JPanel topPanel = new JPanel(); topPanel.setOpaque(false); topPanel.setLayout(new GridLayout(2, 2, 5, 5)); JLabel userLabel = new JLabel("USERNAME : ", JLabel.CENTER); userLabel.setForeground(Color.WHITE); userField = new JTextField(10); JLabel passLabel = new JLabel("PASSWORD : ", JLabel.CENTER); passLabel.setForeground(Color.WHITE); passField = new JPasswordField(10); topPanel.add(userLabel); topPanel.add(userField); topPanel.add(passLabel); topPanel.add(passField); JPanel bottomPanel = new JPanel(); bottomPanel.setOpaque(false); loginButton = new JButton("Click to LOGIN"); loginButton.setIcon(image); loginButton.setHorizontalTextPosition(AbstractButton.CENTER); loginButton.setVerticalTextPosition(AbstractButton.BOTTOM); bottomPanel.add(loginButton); basePanel.add(topPanel, BorderLayout.CENTER); basePanel.add(bottomPanel, BorderLayout.PAGE_END); imageLabel.setLayout(new GridBagLayout()); imageLabel.add(basePanel); contentPane.add(imageLabel, BorderLayout.CENTER); frame.setContentPane(contentPane); frame.pack(); frame.setLocationByPlatform(true); frame.setVisible(true); } public static void main(String... args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new ButtonImageExample().displayGUI(); } }); } } 

这是相同的输出:

JLabelAsBackground