我创建一个程序从一个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(); } }); } }