java setText在JLabel

时间:2017-05-19 16:40:18

标签: java swing jlabel

尝试在JLabel中显示sql结果。我使用netbeans,因此它为swing组件自动生成代码。

Welcome_screen.java,主要方法

package my.welcomescreen;
import java.io.InputStream;
import java.sql.*;
import javax.swing.*;

public class Welcome_screen extends javax.swing.JFrame {

  public Welcome_screen() {
    initComponents();

  }

  private void initComponents() {

    jLabel9 = new javax.swing.JLabel();

  }

  public static void main(String args[]) {
    Welcome_screen courses = new Welcome_screen();
    courses.getCourses();


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

         }
      });
   }

  public void getCourses(){

    db obj = new db();
    obj.dbconnect();
    String Query = "select * from courses";
    try{
        Connection con = obj.dbconnect();
        Statement st = con.createStatement();
        ResultSet rs = st.executeQuery(Query);

        if(rs.next()){
            //System.out.println(rs.getString("name"));
            jLabel9.setText(rs.getString("name"));
        }



    }catch(Exception e){
        System.out.println(e);
    }


}

private javax.swing.JLabel jLabel9;

}

db.java,数据库连接文件。

package my.welcomescreen;
import java.sql.*;

public class db {

    public static Connection dbconnect(){
        Connection con=null;
         try {

          Class.forName("com.mysql.jdbc.Driver");
          con = DriverManager.getConnection("jdbc:mysql://localhost/st2", "root", "");


    }
      catch (ClassNotFoundException | SQLException e){
      System.out.println(e);
  }
     return con; 
 }

}

当我将sql结果打印到命令行时,它可以工作。预期结果显示。但在JLabel中没有任何反应。甚至没有发生错误。我找不到什么错误。一点帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

首先:你必须在框架上放置JLABEL:

getContentpane().add(label9);

之后,我建议您查看以下方法:

rame.setSize(width, height);
Frame.getContentPane();
Container/JComponent.add(Component c);
Component.setLayout(LayountManager manager);

我建议观看更多视频或阅读有关Swing bevore的博客继续。但这是你应该使用的代码:

private void initComponents() {

    label9 = new JLabel();
    label9.setText("SOME TEXT");
    JPanel p = new JPanel();
    p.setSize(100, 50);
    p.setLayout(new FlowLayout());
    p.add(jLabel9);
    p.setVisible(true);

    setSize(200, 200);
    getContentPane().add(p);

}

尝试致电

jlabel9.setText("Your readen text!");
jlabel9.repaint();

它会重新标记标签并更新内容。

答案 1 :(得分:1)

您需要在jPanel上找到jLabel9,并在Frame上找到它。其中一种方法是使用构造函数。由于您的课程来自JFrame,因此您无需使用this.add()JFrame jf = new JFrame();

private void initComponents() {

    jLabel9 = new javax.swing.JLabel();
    jLabel9.setBackground(Color.red);
    jLabel9.setVisible(true);
    jLabel9.setText("Hello");
    JPanel jp = new JPanel();
    jp.setSize(100, 50);
    jp.add(jLabel9);
    jp.setVisible(true);

    setSize(200, 200);
    add(jp);
    setVisible(true);

}

或直接在JFrame

private void initComponents() {

    jLabel9 = new javax.swing.JLabel();
    jLabel9.setBackground(Color.red);
    jLabel9.setVisible(true);
    jLabel9.setText("Hello");
        setSize(200, 200);
        add(jLabel9);
// one of other way to use contentpane
// getContantPane().add(jLabel9);
        setVisible(true);
    }