يختفي نص Jlabel بعد أقل من ثانية
سؤال
لقد صنعت 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);}});
هذا لا معنى له. يوجد المزيد هنا ، لأن هذا ليس كل رمزك ، لكنني أعتقد أن السطر المذكور أعلاه هو نقطة الانطلاق لبعض مشاكلك (إن لم يكن كل).