Java编程实例:隐藏窗体实现与工程文件

版权申诉
0 下载量 63 浏览量 更新于2024-11-13 收藏 12KB RAR 举报
资源摘要信息:"Java编程隐藏窗体实例" 知识点: 1. Java基础概念:Java是一种广泛使用的面向对象的编程语言,它支持跨平台的特性,即“一次编写,到处运行”。Java广泛应用于Web开发、企业级应用、安卓应用开发等领域。 2. GUI编程概念:GUI(图形用户界面)编程是指在计算机中使用图形方式显示用户界面,以便用户通过图形化界面与计算机进行交互。Java提供了多种用于GUI编程的库,如AWT(Abstract Window Toolkit)、Swing和JavaFX等。 3. AWT与Swing概述: - AWT(Abstract Window Toolkit)是Java早期的GUI工具包,它是Java的一部分,提供了一组用于创建和管理窗口、按钮、文本框等GUI组件的类。 - Swing是AWT的扩展库,它提供了更丰富的GUI组件,并解决了AWT的一些限制。Swing组件不是直接映射到本地平台的控件,而是使用Java编写,这使得它能够提供一致的外观和行为。 4. 隐藏窗体技术:在Java的GUI编程中,隐藏窗体是通过设置窗体的可见性属性来实现的。具体操作是通过调用窗体对象的setVisible方法,并传递一个布尔值false来完成。例如,假设有一个窗体对象名为frame,则调用frame.setVisible(false)即可隐藏该窗体。 5. Java Swing中的JFrame类:JFrame是Swing库中用于创建一个窗口的应用程序的主要类之一。JFrame类提供了许多方法来管理窗体,包括设置窗体大小、位置、标题、默认关闭操作等。 6. 实例分析:在提供的资源中,“隐藏窗体实例”可能指一个具体的Java项目文件,它包含了一个或者多个Java文件(.java),以及必要的编译信息。这个实例被描述为“包括工程文件,编译通过”,意味着该实例是一个完整的Java项目,用户可以使用Java编译器(如javac)编译该项目,并成功运行,验证窗体隐藏功能是否正常工作。 7. 工程文件概念:在Java开发中,一个工程(Project)是由一系列源代码文件(.java)、资源文件、编译后的字节码文件(.class)、库依赖文件等组成的集合。这些文件通常组织在一个文件夹或使用特定的项目管理工具(如Eclipse、IntelliJ IDEA)进行管理。 8. 编译过程:Java代码需要通过Java编译器编译成字节码文件,然后才能通过Java虚拟机(JVM)执行。编译过程主要是将Java源代码转换为.class文件中的字节码,这个过程是Java开发中的一个基本步骤。 9. 使用IDE开发Java程序:开发者通常使用集成开发环境(IDE)来简化Java程序的开发过程。IDE提供了代码编写、编译、调试等功能,并自动管理项目文件结构。常见的Java IDE包括Eclipse、IntelliJ IDEA、NetBeans等。 10. Java程序发布:Java程序开发完成后,需要进行打包和发布。可以将程序打包为JAR(Java Archive)文件,这种文件格式便于分发和部署。对于图形界面程序,可以创建可执行的JAR文件,用户双击即可运行程序。 通过这些知识点的总结,可以深入了解Java编程中创建和隐藏GUI窗体的技术细节,以及如何管理和编译Java程序。这些知识有助于开发者更有效地创建复杂的桌面应用程序。

这段代码中加一个test loss功能 class LSTM(nn.Module): def __init__(self, input_size, hidden_size, num_layers, output_size, batch_size, device): super().__init__() self.device = device self.input_size = input_size self.hidden_size = hidden_size self.num_layers = num_layers self.output_size = output_size self.num_directions = 1 # 单向LSTM self.batch_size = batch_size self.lstm = nn.LSTM(self.input_size, self.hidden_size, self.num_layers, batch_first=True) self.linear = nn.Linear(65536, self.output_size) def forward(self, input_seq): h_0 = torch.randn(self.num_directions * self.num_layers, self.batch_size, self.hidden_size).to(self.device) c_0 = torch.randn(self.num_directions * self.num_layers, self.batch_size, self.hidden_size).to(self.device) output, _ = self.lstm(input_seq, (h_0, c_0)) pred = self.linear(output.contiguous().view(self.batch_size, -1)) return pred if __name__ == '__main__': # 加载已保存的模型参数 saved_model_path = '/content/drive/MyDrive/危急值/model/dangerous.pth' device = 'cuda:0' lstm_model = LSTM(input_size=1, hidden_size=64, num_layers=1, output_size=3, batch_size=256, device='cuda:0').to(device) state_dict = torch.load(saved_model_path) lstm_model.load_state_dict(state_dict) dataset = ECGDataset(X_train_df.to_numpy()) dataloader = DataLoader(dataset, batch_size=256, shuffle=True, num_workers=0, drop_last=True) loss_fn = nn.CrossEntropyLoss() optimizer = optim.SGD(lstm_model.parameters(), lr=1e-4) for epoch in range(200000): print(f'epoch:{epoch}') lstm_model.train() epoch_bar = tqdm(dataloader) for x, y in epoch_bar: optimizer.zero_grad() x_out = lstm_model(x.to(device).type(torch.cuda.FloatTensor)) loss = loss_fn(x_out, y.long().to(device)) loss.backward() epoch_bar.set_description(f'loss:{loss.item():.4f}') optimizer.step() if epoch % 100 == 0 or epoch == epoch - 1: torch.save(lstm_model.state_dict(), "/content/drive/MyDrive/危急值/model/dangerous.pth") print("权重成功保存一次")

2023-06-03 上传