使用来自其他文本的多行创建 JLabel
Creating a JLabel with multiple lines from other text
我正在创建一个程序来从 JTextArea 中获取文本并将其放入 JLabel,但是 JLabel 只是一个谎言,我知道将多行添加到 JLabel 的唯一方法是使用 html 您必须将其放入文本中的函数。我将如何创建新行,有没有办法找到新行的 JTextArea 版本或者它是完全不同的东西?
最简单的解决方案:不使用 JLabel。将您的文本放入一个 看起来 像 JLabel 的 JTextArea 中——它不是不透明的、可聚焦的或不可编辑的。
例如,
import java.awt.event.ActionEvent;
import javax.swing.*;
@SuppressWarnings("serial")
public class AreaAsLabel extends JPanel {
private JTextArea textEntry = new JTextArea(5, 20);
private JTextArea labelLikeDisplay = new JTextArea(5, 20);
public AreaAsLabel() {
textEntry.setLineWrap(true);
textEntry.setWrapStyleWord(true);
labelLikeDisplay.setLineWrap(true);
labelLikeDisplay.setWrapStyleWord(true);
labelLikeDisplay.setEditable(false);
labelLikeDisplay.setFocusable(false);
labelLikeDisplay.setOpaque(false);
add(new JScrollPane(textEntry));
add(new JButton(new TransferTextAction("Transfer Text")));
add(labelLikeDisplay);
}
class TransferTextAction extends AbstractAction {
public TransferTextAction(String name) {
super(name);
int mnemonic = (int) name.charAt(0);
putValue(MNEMONIC_KEY, mnemonic);
}
@Override
public void actionPerformed(ActionEvent e) {
String text = textEntry.getText();
labelLikeDisplay.setText(text);
textEntry.selectAll();
textEntry.requestFocusInWindow();
}
}
private static void createAndShowGui() {
JFrame frame = new JFrame("AreaAsLabel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new AreaAsLabel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
我正在创建一个程序来从 JTextArea 中获取文本并将其放入 JLabel,但是 JLabel 只是一个谎言,我知道将多行添加到 JLabel 的唯一方法是使用 html 您必须将其放入文本中的函数。我将如何创建新行,有没有办法找到新行的 JTextArea 版本或者它是完全不同的东西?
最简单的解决方案:不使用 JLabel。将您的文本放入一个 看起来 像 JLabel 的 JTextArea 中——它不是不透明的、可聚焦的或不可编辑的。
例如,
import java.awt.event.ActionEvent;
import javax.swing.*;
@SuppressWarnings("serial")
public class AreaAsLabel extends JPanel {
private JTextArea textEntry = new JTextArea(5, 20);
private JTextArea labelLikeDisplay = new JTextArea(5, 20);
public AreaAsLabel() {
textEntry.setLineWrap(true);
textEntry.setWrapStyleWord(true);
labelLikeDisplay.setLineWrap(true);
labelLikeDisplay.setWrapStyleWord(true);
labelLikeDisplay.setEditable(false);
labelLikeDisplay.setFocusable(false);
labelLikeDisplay.setOpaque(false);
add(new JScrollPane(textEntry));
add(new JButton(new TransferTextAction("Transfer Text")));
add(labelLikeDisplay);
}
class TransferTextAction extends AbstractAction {
public TransferTextAction(String name) {
super(name);
int mnemonic = (int) name.charAt(0);
putValue(MNEMONIC_KEY, mnemonic);
}
@Override
public void actionPerformed(ActionEvent e) {
String text = textEntry.getText();
labelLikeDisplay.setText(text);
textEntry.selectAll();
textEntry.requestFocusInWindow();
}
}
private static void createAndShowGui() {
JFrame frame = new JFrame("AreaAsLabel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new AreaAsLabel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}