不能更新文本的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());

如果在上述选项之后显示相同的结果,则唯一的原因可能是你传递的字符串可能是空的。

最新更新