【问题标题】:Java -How to implement code into GUI made in Netbeans gui builder?Java - 如何在 Netbeans gui builder 中实现代码到 GUI 中?
【发布时间】:2015-08-19 15:22:58
【问题描述】:

我使用 NetBeans GUI builder 制作了一个 GUI,它看起来很棒!但是,我不知道如何实现代码以更改 GUI 内的值。

我的程序连接到数据库并提取每个患者的性别、房间号、床位号、姓名和转诊来源等信息。 GUI 的目的是每隔 60 秒左右就表示对该信息的任何更改,因此我希望它自动与数据库同步一次。我可以编写数据库同步的代码,并且我已经制作了 GUI。

我的问题是如何更新在 NetBeans 中制作的 GUI 中显示的信息?

public class ConnectMSSQLServer {

static int bedCount;

public static int getBedCount(){


    return bedCount;

}

public void setBedCount(int number){
    bedCount = number;

}
public void dbConnect(String db_connect_string, String db_userid, String db_password) {
    try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        Connection conn = DriverManager.getConnection(db_connect_string, db_userid, db_password);
        System.out.println("connected");
        Statement statement = conn.createStatement();
        String queryString = "select f2 from beds.dbo.Sheet1$";
        String queryString1 = "select f3 from beds.dbo.Sheet1$";
        String queryString2 = "select f4 from beds.dbo.Sheet1$";
        String queryString3 = "select f5 from beds.dbo.Sheet1$";
        String queryString4 = "select f6 from beds.dbo.Sheet1$";
        String queryString5 = "select f7 from beds.dbo.Sheet1$";
        String queryString6 = "select f8 from beds.dbo.Sheet1$";
        String queryString7 = "select f9 from beds.dbo.Sheet1$";
        String queryString8 = "select f10 from beds.dbo.Sheet1$";
        String queryString9 = "select f11 from beds.dbo.Sheet1$";
        String queryString10 = "select f12 from beds.dbo.Sheet1$";

        List<String> locationList = new ArrayList<String>();
        List<String> patientList = new ArrayList<String>();
        List<String> refferallList = new ArrayList<String>();
        List<String> DateList = new ArrayList<String>();
        // List<String> locationList = new ArrayList<String>();
        // List<String> locationList = new ArrayList<String>();
        // List<String> locationList = new ArrayList<String>();
        ResultSet rs = statement.executeQuery(queryString);

        while (rs.next()) {

            locationList.add(rs.getString(1));
            locationList.removeAll(Collections.singleton(null));

        }
        ResultSet rs1 = statement.executeQuery(queryString1);

        while (rs1.next()) {

            patientList.add(rs1.getString(1));
            patientList.removeAll(Collections.singleton(null));

        }

        Set<String> uniqueLocationList = new HashSet<String>(locationList);
        System.out.println(uniqueLocationList);
        setBedCount(uniqueLocationList.size());
        Set<String> uniquePatientList = new HashSet<String>(patientList);
        System.out.println(uniquePatientList);

    } catch (Exception e) {
        e.printStackTrace();
    }
}

public static void main(String[] args) {
    ConnectMSSQLServer connServer = new ConnectMSSQLServer();
    connServer.dbConnect("jdbc:sqlserver://******", "***", "********");
}

}

所以基本上我想在提供的示例中编写代码,将数据附加到 GUI 中。像 bed1A.setIcon(emptyIcon);类似的东西,但我不知道如何从外部存在的代码中更改 GUI 的值。

【问题讨论】:

  • 您的问题似乎有点宽泛。你能说得更具体些吗——你想具体改变什么?涉及哪些 GUI 组件?你能显示相关的代码吗?
  • 显示相关代码,只有我们可以提供帮助。没有神通领主赐予我看图中的代码,帮你解惑。
  • 我的意思是我的问题要广泛,因为我希望更改 GUI 中显示的几乎所有内容。我只是不知道如何实现 netbeans 生成的代码,它有 6000 多行,我不知道是否应该创建一个扩展此 GUI 类的新类,然后以某种方式更改参数或编辑代码中的图形用户界面类。例如,如果房间 1 的数据库值更改为空,那么我想从房间中删除 Christine 并将该床的颜色改回灰色。
  • "I kind of meant for my quesiton to be broad..." -- 如果你想要一个广泛的答案,那么就是使用 MVC,Model-View-Controller,将你的程序逻辑从视图中分离出来,并让模型监听器改变视图的状态。另一个广泛的建议是在使用代码生成实用程序之前一定要学习好 GUI 库,换句话说,在使用 NetBeans 生成代码之前,确保你知道如何手工编写 Swing,否则你会卡住.如果你想要更具体的记录,那么我认为你仍然想问一个更具体的问题。
  • @WeareBorg 我不确定我可以向您展示什么代码来帮助澄清这一点。我只是想知道我应该用 netbeans gui builder 制作的 GUI 做什么。我不知道如何将它与我自己的代码一起使用。我可以通过 netbeans 生成的一些代码,但它超过 6000 行。

标签: java swing user-interface netbeans swingworker


【解决方案1】:
  • 保留一个 Controller 类、应用程序、boss。
  • 保留一个 DataModel 类,控制器的字段,用于从用于创建 GUI 的数据库加载的所有数据;由控制器完成。
  • 然后是视图,您的 JFrame,控制器的一个字段。

现在在 GUI 构建器中,您不想重复自己(原则上是 DRY)。所有这些房间组件都应该是 List 个房间。使用 GUI builder 添加一些元素后,您可以调整数组/列表的代码。

控制器可以在 JFrame 中设置内容:您添加到 JFrame:addPatient(int room, int bed, String name) 并可以从列表中获取组件并使用 Ctrl-SpacesetText("Jane") 中选择任何内容。

制作像RoomBedPatient这样的数据类。

(使用版本控制。)

【讨论】:

  • 感谢您澄清这一点,但是如何在我的控制器中使用 gui builder 类?我尝试扩展它并实现它,但是当我调用 new gui(); 时似乎没有任何东西出现。在我的主要方法中。
  • 从设计视图切换到源代码视图,您可以展开生成的代码部分,查看声明的字段:jPanel1、jTextField4 等。在单独的项目中进行实验以执行 jTextField.setBackground(Color.RED) 等操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-29
  • 2012-07-26
  • 2015-11-29
相关资源
最近更新 更多