Java 如何使用整个Jlabel来保存文本
我想知道是否有一种方法可以使用JLabel整个区域来显示文本,每当我使用JLabel时,所有文本都在中间,即使文本量超过JLabel的大小。有没有办法告诉JLabel中的文本使用整个JLabel?您可以。。。 使用Java 如何使用整个Jlabel来保存文本,java,Java,我想知道是否有一种方法可以使用JLabel整个区域来显示文本,每当我使用JLabel时,所有文本都在中间,即使文本量超过JLabel的大小。有没有办法告诉JLabel中的文本使用整个JLabel?您可以。。。 使用html包装文本,并将其设置为标签,它将自动包装到容器的约束 还要记住,布局管理器的选择将对输出产生很大影响。这两个示例都使用了边框布局,但您也可以使用GridBagLayout,请注意您的意思是将文本展开,还是将其字体改大?我想知道您是否希望进行自定义绘制,并使用FontMetri
html
包装文本,并将其设置为标签,它将自动包装到容器的约束
还要记住,布局管理器的选择将对输出产生很大影响。这两个示例都使用了
边框布局
,但您也可以使用GridBagLayout
,请注意您的意思是将文本展开,还是将其字体改大?我想知道您是否希望进行自定义绘制,并使用FontMetrics来帮助确定使用的字体大小。展开这正是我想要的。如果您的文本较大,请使用一个使用GridLayout(1,0)
(一行,可变列)的JPanel,并将每个字母作为其自己的JLabel添加到同一个JPanelOr中,然后使用JTextArea并更改其属性,使其看起来像JLabel。当然,您需要设置换行和换行属性。@ComputerCoderAN答案归结为多种因素的组合。如果您希望标签“扩展”其宽度以匹配文本的大小,那么您需要使用布局管理器来允许它这样做。如果要将文本换行为多行,则需要用html换行,或者使用and readonlyJTextArea
,还需要使用支持它的布局管理器
public class TestHTMLLabel {
public static void main(String[] args) {
new TestHTMLLabel();
}
public TestHTMLLabel() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
StringBuilder sb = new StringBuilder(64);
sb.append("<html>I have something to say, it's beter to burn out then to fade away.").
append(" This is a very long String to see if you can wrap with in").
append("the available space</html>");
JLabel label = new JLabel(sb.toString());
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(label);
frame.setSize(100, 100);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
public TestPane() {
StringBuilder sb = new StringBuilder(64);
sb.append("I have something to say, it's beter to burn out then to fade away.").
append(" This is a very long String to see if you can wrap with in").
append("the available space");
setLayout(new BorderLayout());
JTextArea ta = new JTextArea(10, 20);
ta.setOpaque(false);
ta.setEditable(false);
ta.setBorder(null);
ta.setWrapStyleWord(true);
ta.setLineWrap(true);
ta.setText(sb.toString());
add(ta);
}
}
}