Java 摆动对齐图标内的文本
Java Swing align text inside icon
如何将文本对齐到 JButton 的左侧,但图标仍然居中并且没有被文本推开?
错误对齐:
我更想要这样,但文本是左对齐的:
我已经测试了 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 text:
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);
如何将文本对齐到 JButton 的左侧,但图标仍然居中并且没有被文本推开?
错误对齐:
我更想要这样,但文本是左对齐的:
我已经测试了 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 text:
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);