Código fuente del programa JTextFieldLinesTest
Ver la entrada correspondiente en el siguiente enlace:
JTextField y saltos de línea
package pruebas; import java.awt.Component; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.BoxLayout; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JSeparator; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.JToggleButton; import javax.swing.SwingUtilities; import javax.swing.text.AbstractDocument; import javax.swing.text.Document; import javax.swing.text.DocumentFilter; /** * @see http://bugs.sun.com/view_bug.do?bug_id=6427290 */ public class JTextFieldLinesTest { public static String makeInfo() { String info= String.format("" + "%njava.class.version= " + System.getProperty("java.class.version") + "%njava.runtime.version= " + System.getProperty("java.runtime.version") + "%njava.specification.name= " + System.getProperty("java.specification.name") + "%njava.specification.vendor= " + System.getProperty("java.specification.vendor") + "%njava.specification.version= " + System.getProperty("java.specification.version") + "%njava.version= " + System.getProperty("java.version") + "%njava.vm.info= " + System.getProperty("java.vm.info") + "%njava.vm.name= " + System.getProperty("java.vm.name") + "%njava.vm.specification.name= " + System.getProperty("java.vm.specification.name") + "%njava.vm.specification.vendor= " + System.getProperty("java.vm.specification.vendor") + "%njava.vm.specification.version= " + System.getProperty("java.vm.specification.version") + "%njava.vm.vendor= " + System.getProperty("java.vm.vendor") + "%njava.vm.version= " + System.getProperty("java.vm.version") + "%nos.arch= " + System.getProperty("os.arch") + "%nos.name= " + System.getProperty("os.name") + "%nos.version= " + System.getProperty("os.version") + "%n" ); return info; } //-------------------------------------------------------------------------- public static void selectAll(final JTextField aTextField) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { aTextField.selectAll(); aTextField.requestFocusInWindow(); } }); } //-------------------------------------------------------------------------- public static void example() { final String DEFAULT_TEXT= String.format("Line1%nLine2%nLine3%nLine4%nLine5"); JTextArea textArea= new JTextArea(); textArea.setText( makeInfo() ); textArea.setEditable(false); final JTextField textField= new JTextField(); textField.setEditable(true); String text= String.format(DEFAULT_TEXT); textField.setText(text); selectAll(textField); final JToggleButton button= new JToggleButton("Toogle new lines mode"); final JPanel panel= new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS)); textArea.setAlignmentX(Component.CENTER_ALIGNMENT); textField.setAlignmentX(Component.CENTER_ALIGNMENT); button.setAlignmentX(Component.CENTER_ALIGNMENT); panel.add(textArea); panel.add(new JSeparator(JSeparator.HORIZONTAL)); panel.add(textField); panel.add(new JSeparator(JSeparator.HORIZONTAL)); panel.add(button); final JFrame frame= new JFrame("JTextField test"); frame.setContentPane(panel); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); button.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { Document document= textField.getDocument(); AbstractDocument abstractDocument= (AbstractDocument) document; DocumentFilter filter; if (button.isSelected() == true) { filter= new DocumentFilter(); } else { filter= null; } abstractDocument.setDocumentFilter(filter); String text= DEFAULT_TEXT; textField.setText(text); selectAll(textField); panel.revalidate(); panel.repaint(); frame.pack(); } }); frame.setVisible(true); } //-------------------------------------------------------------------------- public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { example(); } }); } //-------------------------------------------------------------------------- }
Excelente.. funciona ,muy bien.. y me va a servir para mostrar informacion rapida multilineal... ya que el JtextArea tiene ciertas propiedades que no puedo quitarle como el recuadro o borde.. el fondo de color y otras cosas que suele ser molesto para presentar un texto.. tambien se puede realizar un JLabel en multilinea de una manera mas sencilla
ResponderEliminarMe alegra que te sirva para solventar algún problema.
EliminarRespecto a varias líneas en un JLabel te puede interesar incrustar HTML, como expliqué aquí para los Tool Tips:
http://programacion-curiosidad.blogspot.com.es/2014/02/tool-tip-multilinea-en-java-swing.html
Gracias por comentar.