سؤال

لقد صنعت JFrame في NetBeans (يحتوي حاليًا على JLabel واحد فقط) والذي يتصل بقاعدة البيانات ويحصل على حقل وعرضه في JLabel. عندما أقوم بتشغيل البرنامج ، يعرض JLabel الحقل بأقل من الثانية ، ثم يختفي النص في JLabel !! هل يمكن لأي شخص أن يخبرني لماذا يحدث هذا؟ لقد جربتها أيضًا في Jtextfield ، وهي نفس المشكلة أيضًا.

الشفرة :

public class frame extends javax.swing.JFrame {

    public frame() {
        initComponents();
    }

public void doingAll() {

      StringBuffer message = new StringBuffer();
    try {
      Statement stmt;
      Class.forName("com.mysql.jdbc.Driver");
      String url ="jdbc:mysql://localhost:3306/Junk2";
      Connection con = DriverManager.getConnection( url,"root", "");
      System.out.println("URL: " + url);
      System.out.println("Connection: " + con);
      stmt = con.createStatement();

      stmt.executeQuery("select * from Junk2.example");
      ResultSet rs = stmt.executeQuery("select * from Junk2.example");
      int columns = rs.getMetaData().getColumnCount();
      while(rs.next()){
      for (int i=1;i<=columns;i++){
      message.append(rs.getString(i)+" ");
      }
      message.append("\n");
      }
      System.out.println(message);

      con.close();
      }catch( Exception e ) {
      e.printStackTrace();
      }//end catch
      jLabel1.setText(message.toString());
      jTextField1.setText(message.toString()); 


       java.awt.EventQueue.invokeLater(new Runnable(){public void run(){new frame().setVisible(true);}});

    }

    // Variables declaration - do not modify
    private javax.swing.JLabel jLabel1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration

}
هل كانت مفيدة؟

المحلول

أظن أنه في مكان آخر في التعليمات البرمجية الخاصة بك ، تقوم بمسح الحقل.

ابحث من خلال الكود الخاص بك عن الأماكن التي يكون فيها

  • أنت تفعل setText ("") ؛
  • قم بإزالة الملصق من الشاشة
  • ارسم مكونًا آخر على الجزء العلوي من الملصق
  • نفذت طريقة السحب الخاصة بك.

بدلا من ذلك ، نشر رمز هنا. سؤالك بعيد عن غامض لإعطاء إجابة واضحة.

تحرير: اتباع عرض الكود الخاص بك

طريقة القيام بها ليست ثابتة ، مما يعني أنه سيتعين عليك إنشاء كائن إطار للاتصال به. ثم ، في نهاية هذه الطريقة ، تقوم بإنشاء إطار جديد مع الكود

java.awt.EventQueue.invokeLater(new Runnable(){public void run(){new frame().setVisible(true);}});

هذا لا معنى له. يوجد المزيد هنا ، لأن هذا ليس كل رمزك ، لكنني أعتقد أن السطر المذكور أعلاه هو نقطة الانطلاق لبعض مشاكلك (إن لم يكن كل).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top