尝试在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中没有任何反应。甚至没有发生错误。我找不到什么错误。一点帮助将不胜感激!
答案 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);
}