簡體   English   中英

Java Swing 在圖標內對齊文本

[英]Java Swing align text inside icon

如何將文本對齊到 JButton 的左側,但圖標居中並且不會被文本推開?

虛假的 alignment:

https://i.stack.imgur.com/UQj0q.png

我希望它更像這樣,但文本左對齊:

https://i.stack.imgur.com/2elnN.png

我已經測試了setHorizontalAlignment()setHorizontalTextPosition方法。
我還想避免在 JButton 上放置 Jlabel。

我的代碼:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;

public class Example extends JFrame {

    private JPanel contentPane;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Example frame = new Example();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Example() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(null);
        setContentPane(contentPane);
        
        JButton settings_bnt = new JButton("settings");
        
        settings_bnt.setIcon(new ImageIcon(Example.class.getResource("/grafics/MainGUI/Settings.png")));
        settings_bnt.setFont(new Font("Tahoma", Font.PLAIN, 17));
        settings_bnt.setForeground(Color.WHITE);
        settings_bnt.setHorizontalAlignment(SwingConstants.CENTER);
        settings_bnt.setHorizontalTextPosition(SwingConstants.CENTER);
        settings_bnt.setBounds(10, 10, 112, 35);
        settings_bnt.requestFocus();
        add(settings_bnt);
    }

}

需要一個以圖標圖像為背景的按鈕。

看了看,最簡單的 JButton 具有正常的圖標 & 文本 & 按鈕外觀是:

    setIconTextGap(-100);        

其中 100 與左側圖標的寬度有關。

第二種選擇是使用 HTML 文本:

    URL backgroundURL = getClass().getResource("/background.png");
    String text = "Panic!";
    text = "<html><div style='padding: 3px 10px 3px 10px; background: url("
        + backgroundURL.toExternalForm() + ")'>"+ text + "</div>";
    setText(text);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM