java - 无法更新从数据库获取的 JtextArea 文本同时手动插入(运行时)

标签 java jtextarea

我无法更新从数据库获取的 JtextArea 文本,该文本是我在运行时手动插入数据库表中的,

我真正需要的是显示在运行时插入同一帧的记录

 System.out.println("") //this statement works fine but 
 textArea.insert("", 0);

给出的是我的代码

public class Test extends JFrame { 
JPanel menuBarPan ,eastNav,westNav,mPanel ,ctrPanel;

JTextArea textArea;
JTextField textField;
String userName;
Connection conn;
ResultSet rs;
PreparedStatement stmt;

public Test(String userName , Connection con){
    this.userName = userName;
    this.conn = con;


    setSize(900,670);
    setLayout(new BorderLayout());

         textArea = new JTextArea();
         textArea.setEditable(false);
         textArea.setText("kop");


          try {  
                stmt = conn.prepareStatement("select * from mydb.tabel");
                rs = stmt.executeQuery();
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(null,ex.getMessage());
            }
            mPanel =new MyPanel();
        add(mPanel,BorderLayout.CENTER);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}


public static void main(String[]args){
    Runnable runnable =new Runnable(){
       @Override
       public void run(){
           Connect co=new Connect();
           Test obj=new Test("SUL" ,co.conn);

           java.util.Timer timer=new java.util.Timer();
           timer.schedule(obj.new TimerClass(), 1000, 1000);
        } 
    };
    SwingUtilities.invokeLater(runnable);
}

public class MyPanel extends JPanel{

    MyPanel(){
        setLayout(new BorderLayout());
            ctrPanel = new JPanel();
            ctrPanel.setBorder(BorderFactory.createEtchedBorder());

            JScrollPane jsp=new JScrollPane(textArea);
            jsp.setBorder(BorderFactory.createEmptyBorder());

            textField = new JTextField();
        add(ctrPanel,BorderLayout.WEST);
        add(jsp,BorderLayout.CENTER);
        add(textField,BorderLayout.SOUTH);
    }
}
public class TimerClass extends TimerTask{

    @Override
    public void run() {
    Runnable runnable =new Runnable(){int replyLength=0;
        @Override
        public void run() {
            try {  
                stmt = conn.prepareStatement("select * from mydb.tabel");
                rs = stmt.executeQuery();

                textArea = new JTextArea();
                textArea.setEditable(false);
                textArea.setText("kop");
                while(rs.next()){
                    System.out.println(rs.getString("rep"));
                    String reply = rs.getString("rep");
                    System.out.println("rep : "+reply);

                    textArea.insert(reply, 0);
                    replyLength=reply.length();
                    textArea.insert("\n",replyLength);
                }
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(null,ex.getMessage());
            }
            mPanel = new MyPanel();
        }
    };
    SwingUtilities.invokeLater(runnable);
    }
}

}

最佳答案

//确保新文本可见,即使有 //是文本区域中的一个选择。

    textArea.setCaretPosition(textArea.getDocument().getLength());

如果即使在上述选项之后仍然显示相同的结果, 唯一的原因可能是您传递的字符串可能为空。 否则没问题。

关于java - 无法更新从数据库获取的 JtextArea 文本同时手动插入(运行时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38929342/

相关文章:

java - 如何在本地机器上为远程tomcat服务器制作一个网络应用程序

java - 无法实例化 Activity 组件信息(Volley)

Java 线程不能与 JTextArea 一起正常工作

java - JTextArea 正则表达式和有序列表

java - 如何将 JTextfield 的 setText 设置为带有数组的方法

java - 您可以禁用 JFace 向导中的后退按钮吗?

java - 如何知道项目是使用 Eclipse 还是 NetBeans 创建的

java - 自动完成响应缓慢

java - 组布局 : JScrollPane in TextArea is not working

java - 如何使用Java实现华为分块文件上传