我有一个 jtextpane。 textpane 的值在数据库中存储为 Blob。当我从数据库中检索值时,我注意到所有数据集都在一行中,但我保存在不同的行中。
插入代码: 尝试 { conn = db.Database();
stat3 = conn
.prepareStatement("Update Knowledgebase SET Plan=? where TabID=? AND Context=?");
stat3.setString(1, jTextPane1.getText());
stat3.setInt(2, 1);
stat3.setObject(3, recv);
stat3.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
检索代码:
conn = db.Database();
stat3 = conn
.prepareStatement("Select Plan from Knowledgebase where TabID=? And Context=?");
stat3.setInt(1, 1);
stat3.setObject(2, recv);
rs = stat3.executeQuery();
while (rs.next()) {
jTextPane1.setText(rs.getString("Plan"));
}
请给我一些建议。
最佳答案
我最好的猜测是您的数据库的编码弄乱了从 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 component tutorial明确规定
Note that the text system uses the '\n' character internally to represent newlines; for details, see the API documentation for DefaultEditorKit
因此,我建议您仔细查看(例如使用调试器)从文本区域检索并存储在数据库中的 String
,并将其与 进行比较之后从数据库中检索的字符串
。这两个很可能不相等
关于java - Java swing 中一行显示的 Blob 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9954004/