Мое лучшее предположение состоит в том, что кодировка вашей базы данных портит символы новой строки в тексте, полученном из JTextArea
. См. Следующие SSCCE для копирования текста между двумя JTextArea
экземплярами. Вы можете ввести многострочный текст в первой области, нажать кнопку, и во второй области появится многострочный текст, включая разрывы строк
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MultiLineTextDemo {
private JFrame testFrame;
private JTextArea firstTextArea, secondTextArea;
private JButton copyTextButton;
public MultiLineTextDemo() {
testFrame = new JFrame( "Copy text between 2 text area's" );
JPanel textPanel = new JPanel( );
textPanel.setLayout( new BoxLayout( textPanel, BoxLayout.PAGE_AXIS ) );
firstTextArea = new JTextArea( 10, 50 );
secondTextArea = new JTextArea( 10, 50 );
secondTextArea.setEditable( false );
textPanel.add( new JScrollPane( firstTextArea ) );
textPanel.add( new JScrollPane( secondTextArea ) );
testFrame.add( textPanel, BorderLayout.CENTER );
copyTextButton = new JButton( "Copy text" );
copyTextButton.addActionListener( new ActionListener() {
@Override
public void actionPerformed( ActionEvent e ) {
copyText();
}
} );
testFrame.add( copyTextButton, BorderLayout.SOUTH );
}
public JFrame getFrame() {
return testFrame;
}
private void copyText(){
secondTextArea.setText( firstTextArea.getText() );
}
public static void main( String[] args ) {
EventQueue.invokeLater( new Runnable() {
@Override
public void run() {
MultiLineTextDemo multiLineTextDemo = new MultiLineTextDemo();
JFrame frame = multiLineTextDemo.getFrame();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.pack();
frame.setVisible( true );
}
} );
}
}
В учебном пособии Swing Text четко указано
Обратите внимание, что текстовая система использует символ '\ n' для представления новых строк; подробности см. в документации API для DefaultEditorKit
Поэтому я предлагаю вам внимательно посмотреть (например, с помощью отладчика) на String
, который вы извлекаете из текстовой области и который храните в БД, и сравнить его с String
, который вы впоследствии извлекаете из DB. Скорее всего, эти двое не равны