[英]Java Swing align text inside icon
如何將文本對齊到 JButton 的左側,但圖標居中並且不會被文本推開?
虛假的 alignment:
我希望它更像這樣,但文本左對齊:
我已經測試了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.