Swing 中的 Java 继承/重用能力

标签 java swing jdbc

package fisheriesdatabase;

import java.sql.*;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class FisheriesDatabase {

public static void main(String[] args) {
    JFrame frame=new JFrame("Fish Data Entry");
    frame.setSize(500,500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel panel=new JPanel();
    frame.add(panel);
    placeComponents(panel);

    frame.setVisible(true);
}

public static void placeComponents(JPanel panel){
    panel.setLayout(null);

    JLabel idlabel=new JLabel("id");
    idlabel.setBounds(10, 10, 80, 25);
    panel.add(idlabel);
    JTextField idtextfield=new JTextField(20);
    idtextfield.setBounds(100, 10, 160, 25);
    panel.add(idtextfield);

    JLabel namelabel=new JLabel("Name");
    namelabel.setBounds(10, 40, 80, 25);
    panel.add(namelabel);        
    JTextField nametextfield=new JTextField(20);
    nametextfield.setBounds(100, 40, 160, 25);
    panel.add(nametextfield);

    JButton button=new JButton("Enter Data");
    button.setBounds(10, 80, 80, 25);
    panel.add(button);

}

public static void connectDB() throws SQLException{
    final String url="jdbc:mysql://localhost:3306";
    final String driver="com.mysql.jdbc.Driver";
    final String dbName="netbeans_test";
    final String uname="root";
    final String pass="";

    Connection conn=null;
    try{
        //Registering the Driver
        Class.forName(driver).newInstance();

        //Open a connection
        conn=DriverManager.getConnection(url+dbName,uname,pass);
        Statement st=conn.createStatement();
        st.executeUpdate("insert into test values('"+idtextfield.getText()+"','"+nametextfield.getText()+"')");            

    }
    catch(ClassNotFoundException | InstantiationException | IllegalAccessException se){
        if(conn==null)
            System.err.println("DATABASE NOT CONNECTED");
        se.printStackTrace();
    }
}
}

上面提到的代码是我对 Swing 的开始,作为一个新手,我只是尝试创建 2 个方法

  • 一个用于数据库连接
  • GUI 的其他内容
    当我尝试访问 connectDB() 内的 placeComponent() 属性时,它显示错误。有人可以帮我吗?

错误出现在executeUpdate 语句中,无法识别“idtextfield”和“nametextfield”

谢谢!!!

最佳答案

我建议您从 Swing tutorial 中的示例开始了解如何更好地构建您的程序。

也许是关于 How to Use Labels 的部分将是一个很好的简单例子。在此示例中,使用面板来包含所有组件。这将允许您创建可以从面板类中实现的任何方法访问的实例变量。

从工作示例开始的其他好处:

  1. 您摆脱了静态方法。

  2. 它不使用 setBounds()。 Swing 被设计为与布局管理器一起使用。请参阅有关布局管理器的教程部分。

  3. 代码将在 EDT 上创建。请参阅有关并发的教程部分。

关于Swing 中的 Java 继承/重用能力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30056530/

相关文章:

java - 将Java连接到MySQL数据库

java - 如何在 Java 7 中使用 FRACTIONALMETRICS 呈现文本

java - 用相同的模型填充多个组合框但选择差异

java - java中如何将值插入数据库

java - 未声明时如何从 Eclipse 重命名方法/字段

java - 多个数据存储操作——我们需要多少个持久化管理器引用?

java - 在 Java 中安排特定时间的事情?

java - 对于序列中的每个成员,确定它是否是完全平方数

java - 是什么导致我的 java awt 和 swing 浏览器的后退按钮无法正常工作?

mysql - java.sql.BatchUpdateException : Row x was cut by GROUP_CONCAT()