我无法修复 GUI 的小问题。 JTextFields

2023-12-24

Small error I can't manage to do. So right now my program GUI looks like this:

现在,“标记”列下有一个文本字段,用户可以在其中输入数据。如果我想在“重量”列下方插入一个文本字段,我也希望重量部分也有相同的效果。

However when I try and put in a TextField, both the the Textfields turn like this when the window is small:

and this when the window is enlarged:

我怎样才能使“标记和重量”下有一个文本字段?

Code:

public class Gradeanalysis implements ActionListener {

public void actionPerformed (ActionEvent e){
     GridBagConstraints gbc = new GridBagConstraints();

    //Adding the JPanels. Panel for instructions
    JPanel panel = new JPanel();
    panel.setLayout(new GridBagLayout());

    //JLabel for the Instructions.
    JLabel label = new JLabel("<html> Instructions: Type in the grades you’ve received, along with the weights they’ll have in the determination of your overall average. <br> After you press ‘Calculate’, the results will show your average so far. <br> Every grade you enter must be a non-negative number, and every percentage/weight you enter must be a positive number :)</html>");
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.gridwidth = 2;
    gbc.gridy = 0;
    panel.add(label, gbc);


    //JLabel1 for Assingment/Grade/Weight(Percent)
    JLabel label1 = new JLabel("<html><pre>Assingment\t\t\t\t\t  Mark\t\t\t\t\tWeight</pre></html>");
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.gridx = 0;
    gbc.gridy = 1;
    gbc.anchor = GridBagConstraints.NORTH;
    panel.add(label1, gbc);

    //JLabel Numbers for the number list of assingments at the side.
    JLabel numbers = new JLabel("1");
    gbc.gridx = 0;
    gbc.gridy = 2;
    gbc.anchor = GridBagConstraints.NORTH;
    gbc.weighty = 1;
    panel.add(numbers, gbc);        

    //JTextfield for Mark
    JTextField mark = new JTextField(2);
    gbc.fill = GridBagConstraints.NONE;
    gbc.gridy = 2;
    panel.add(mark, gbc);


    //JTextfield for Weight
    JTextField weight = new JTextField(2);
    gbc.gridx = 2;
    panel.add(weight, gbc);


    //New frame set
    JFrame frame = new JFrame("Grade Calculator-- ");
    frame.setVisible(true);
    frame.setSize(750,700);
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    frame.add(panel);




}

}

谢谢阅读。


这是我创建的 GUI。

  1. 我不知道你的主要方法在哪里,但是你必须始终通过调用 SwingUtilities invokeLater 方法来启动 Swing 应用程序。 invokeLater 方法将 Swing 组件的创建和执行放在事件调度线程 (EDT) https://docs.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html.

  2. 当我使用 GridBagLayout 时,我使用我创建的 addComponent 方法为每个 Swing 组件创建唯一的 GridBagConstraints。我不喜欢记住默认值。

  3. JFrame 方法的顺序是极其重要。记住本示例中 JFrame 方法的顺序。

  4. 我将说明放在 JTextArea 中。这样,指令文本就会根据 JTextArea 的大小进行分割。无需使用 HTML 硬编码换行符。

这是代码。

package com.ggl.testing;

import java.awt.Component;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class GradeAnalysis implements Runnable {

    private static final Insets normalInsets = new Insets(10, 10, 0, 10);
    private static final Insets finalInsets = new Insets(10, 10, 10, 10);

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new GradeAnalysis());
    }

    @Override
    public void run() {
        JFrame frame = new JFrame("Grade Calculator");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(createMainPanel());
        frame.pack();
        frame.setVisible(true);
    }

    private JPanel createMainPanel() {
        GridBagConstraints gbc = new GridBagConstraints();

        // Adding the JPanels. Panel for instructions
        JPanel panel = new JPanel();
        panel.setLayout(new GridBagLayout());

        int gridy = 0;

        // JLabel for the Instructions.
        JTextArea instructionTextArea = new JTextArea(5, 30);
        instructionTextArea.setEditable(false);
        instructionTextArea.setLineWrap(true);
        instructionTextArea.setWrapStyleWord(true);
        instructionTextArea.setText(getInstructions());
        JScrollPane instructionScrollPane = new JScrollPane(instructionTextArea);
        addComponent(panel, instructionScrollPane, 0, gridy++, 3, 1,
                finalInsets, GridBagConstraints.CENTER,
                GridBagConstraints.HORIZONTAL);

        // JLabels for Assignment/Grade/Weight(Percent)
        JLabel label1 = new JLabel("Assignment");
        label1.setHorizontalAlignment(JLabel.CENTER);
        addComponent(panel, label1, 0, gridy, 1, 1, finalInsets,
                GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL);

        JLabel label2 = new JLabel("Mark");
        label2.setHorizontalAlignment(JLabel.CENTER);
        addComponent(panel, label2, 1, gridy, 1, 1, finalInsets,
                GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL);

        JLabel label3 = new JLabel("Weight");
        label3.setHorizontalAlignment(JLabel.CENTER);
        addComponent(panel, label3, 2, gridy++, 1, 1, finalInsets,
                GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL);

        // JLabel Numbers for the number list of assignments at the side.
        JLabel number = new JLabel("1");
        number.setHorizontalAlignment(JLabel.CENTER);
        addComponent(panel, number, 0, gridy, 1, 1, normalInsets,
                GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL);

        // JTextfield for Mark
        JTextField mark = new JTextField(20);
        mark.setHorizontalAlignment(JLabel.CENTER);
        addComponent(panel, mark, 1, gridy, 1, 1, normalInsets,
                GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL);

        // JTextfield for Weight
        JTextField weight = new JTextField(20);
        weight.setHorizontalAlignment(JLabel.CENTER);
        addComponent(panel, weight, 2, gridy++, 1, 1, normalInsets,
                GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL);

        return panel;
    }

    private String getInstructions() {
        return "Instructions: Type in the grades you’ve received, along with the weights "
                + "they’ll have in the determination of your overall average. After you "
                + "press ‘Calculate’, the results will show your average so far. Every "
                + "grade you enter must be a non-negative number, and every "
                + "percentage/weight you enter must be a positive number :)";
    }

    private void addComponent(Container container, Component component,
            int gridx, int gridy, int gridwidth, int gridheight, Insets insets,
            int anchor, int fill) {
        GridBagConstraints gbc = new GridBagConstraints(gridx, gridy,
                gridwidth, gridheight, 1.0D, 1.0D, anchor, fill, insets, 0, 0);
        container.add(component, gbc);
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我无法修复 GUI 的小问题。 JTextFields 的相关文章

  • 如果测试用例失败,Selenium Web 驱动程序无法关闭 Firefox 实例

    我各位 我正在使用 junit 和 selenium web 驱动程序 2 28 问题是 如果我运行成功的测试用例 Web 驱动器能够关闭 Firefox 实例 但是当测试用例失败时 Selenium Web 驱动器无法关闭 Firefox
  • 如何使用 FileChannel 将一个文件的内容附加到另一个文件的末尾?

    File a txt好像 ABC File d txt好像 DEF 我正在尝试将 DEF 附加到 ABC 所以a txt好像 ABC DEF 我尝试过的方法总是完全覆盖第一个条目 所以我总是最终得到 DEF 这是我尝试过的两种方法 File
  • 如何使用 JavaScript 选择预节点/块中的文本?

    我了解不允许 JS 将任意文本复制到剪贴板背后的安全原因 但是是否有一种方法可以通过单击按钮来选择预节点中的文本 类似于 select 函数在输入中的工作方式 我不是在寻找复制到剪贴板的 jQuery 插件 我只想突出显示预块中的文本 以便
  • 在Windows上安装Java 11 OpenJDK(系统路径问题)

    Java 11 最近发布了 众所周知 这个版本没有安装文件 当然 要在没有安装程序的情况下安装 Java 我将系统设置 PATH 和 JAVA HOME 设置为解压缩 Java 11 的文件夹的地址 根据对类似问题的已接受回复建议 唯一的事
  • manifest.mf 文件的附加内容的约定?

    Java JAR 中的 MANIFEST MF 文件是否有任何超出 MANIFEST MF 约定的约定 JAR规范 http download oracle com javase 1 4 2 docs guide jar jar html
  • IntelliJ IDEA 创建的 JAR 文件无法运行

    我在 IntelliJ 中编写了一个跨越几个类的程序 当我在 IDE 中测试它时它运行良好 但是 每当我按照教程将项目制作成 jar 可执行文件时 它就不会运行 双击 out 文件夹中的文件时 该文件不会运行 并显示 无法启动 Java J
  • java.io.IOException: %1 不是有效的 Win32 应用程序

    我正在尝试对 XML 文档进行数字签名 为此我有两个选择 有一个由爱沙尼亚认证中心为程序员创建的库 还有一个由银行制作的运行 Java 代码的脚本 如果使用官方 认证中心 库 那么一切都会像魅力一样进行一些调整 但是当涉及到银行脚本时 它会
  • 如何为 Gson 编写自定义 JSON 反序列化器?

    我有一个 Java 类 用户 public class User int id String name Timestamp updateDate 我收到一个包含来自 Web 服务的用户对象的 JSON 列表 id 1 name Jonas
  • 无法理解 Java 地图条目集

    我正在看一个 java 刽子手游戏 https github com leleah EvilHangman blob master EvilHangman java https github com leleah EvilHangman b
  • 使用 AWS Java SDK 为现有 S3 对象设置 Expires 标头

    我正在更新 Amazon S3 存储桶中的现有对象以设置一些元数据 我想设置 HTTPExpires每个对象的标头以更好地处理 HTTP 1 0 客户端 我们正在使用AWS Java SDK http aws amazon com sdkf
  • org.jdesktop.application 包不存在

    几天以来我一直在构建一个 Java 桌面应用程序 一切都很顺利 但是今天 当我打开Netbeans并编译文件时 出现以下编译错误 Compiling 9 source files to C Documents and Settings Ad
  • 将多模块 Maven 项目导入 Eclipse 时出现问题 (STS 2.5.2)

    我刚刚花了最后一个小时查看 Stackoverflow com 上的线程 尝试将 Maven 项目导入到 Spring ToolSuite 2 5 2 中 Maven 项目有多个模块 当我使用 STS 中的 Import 向导导入项目时 所
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • 运行 Jar 文件时出现问题

    我已将 java 项目编译成 Jar 文件 但运行它时遇到问题 当我跑步时 java jar myJar jar 我收到以下错误 Could not find the main class myClass 类文件不在 jar 的根目录中 因
  • Keycloak - 自定义 SPI 未出现在列表中

    我为我的 keycloak 服务器制作了一个自定义 SPI 现在我必须在管理控制台上配置它 我将 SPI 添加为模块 并手动安装 因此我将其放在 module package name main 中 并包含 module xml 我还将其放
  • 如何测试 spring-security-oauth2 资源服务器安全性?

    随着 Spring Security 4 的发布改进了对测试的支持 http docs spring io spring security site docs 4 0 x reference htmlsingle test我想更新我当前的
  • com.jcraft.jsch.JSchException:身份验证失败

    当我从本地磁盘上传文件到远程服务器时 出现这样的异常 com jcraft jsch JSchException Auth fail at org apache tools ant taskdefs optional ssh Scp exe
  • 中断连接套接字

    我有一个 GUI 其中包含要连接的服务器列表 如果用户单击服务器 则会连接到该服务器 如果用户单击第二个服务器 它将断开第一个服务器的连接并连接到第二个服务器 每个新连接都在一个新线程中运行 以便程序可以执行其他任务 但是 如果用户在第一个
  • javax.persistence.Table.indexes()[Ljavax/persistence/Index 中的 NoSuchMethodError

    我有一个 Play Framework 应用程序 并且我was使用 Hibernate 4 2 5 Final 通过 Maven 依赖项管理器检索 我决定升级到 Hibernate 4 3 0 Final 成功重新编译我的应用程序并运行它
  • Swagger/Openapi-Annotations:如何使用 $ref 生成 allOf?

    我正在生成 Rest 端点 包括添加OpenAPI Swagger对生成的代码进行注释 虽然它对于基本类型运行得很好 但我在自定义类方面遇到了一些问题 现在我有很多自定义类的重复架构条目 使用 Schema 实现 MyClass class

随机推荐

  • ANTLR 入门并避免常见错误

    我已经开始学习 ANTLR 并且拥有 2007 年的书 The Definitive ANTLR Reference 和 ANTLRWorks 用于创建语法的交互式工具 而且 作为这样的人 我从第三章开始 针对不耐烦的人的快速浏览 这是一个
  • PBS 上的 Python 脚本失败,并显示错误 =>> PBS:作业被终止:ncpus 37.94 超出限制 36(总和)

    当我在 PBS 调度程序上运行 python 脚本 使用 Miniconda 时 出现标题中提到的错误 我认为 numpy 正在做一些多线程 处理 但我无法阻止它这样做 我将这些行添加到我的 PBS 脚本中 export MKL NUM T
  • 如何在 JAX-RS 中映射动态 JSON

    我必须使用 JAX RS Resteasy 作为实现 将 JSON 映射到 Java PoJos 问题是 JSON 是动态的 看这个例子 typeCode SAMPLE data id COMMENTS answerValue type Y
  • Ruby 的 Enumerator 对象如何在内部迭代器上进行外部迭代?

    根据 Ruby 的文档 Enumerator 对象使用each方法 枚举 如果没有提供目标方法to enum or enum for方法 现在 让我们以下面的猴子补丁及其枚举器为例 o Object new def o each yield
  • 使用 CXF 时如何处理 WS 输出中的无效字符?

    我正在使用 Spring CXF 和 Hibernate 构建一个 WebService 该服务对我具有只读访问权限的外部数据库执行搜索查询 问题是数据库中的某些条目在文本字段中具有奇怪的字符 0x2 并且它用于处理 序列化从 Hibern
  • C++ 从函数返回对象

    下面的代码显示了一个表示复数的类 我的兴趣是了解operator 功能 我认为Complex res应该分配在函数的框架上operator 将这个对象返回给调用者是否正确 当这个函数返回时 框架已经被弹出了 但是res调用者将继续使用 除非
  • 重命名列表项

    我有以下清单listaValores listaValores lt c for valores in 1 numRepeticion listaValores lt c listaValores readWorksheetFromFile
  • 相当于 mac os X 上的 strace -feopen

    这对于调试很有用 因此与编程相关 在linux上 我们可以使用命令 strace feopen python myfile py 找出加载了哪些 python 模块和共享对象 macOS X 上是否有等效的单行代码 我想你的意思是strac
  • CentOS 中 Apache 没有权限错误

    我已经在 centos 6 中安装了 apache 2 2 当 apache 文件夹位于默认位置时 一切正常 var www html 然后我在我的用户主文件夹中配置了一个虚拟主机 之后 apache 开始显示Forbidden You d
  • 在 WordPress 中获取随机帖子

    如何在 WordPress 中获得随机帖子 我想在页面上显示一个按钮 按下该按钮后 会转到博客中的随机帖子 我不想在页面上显示随机帖子 我只想要一个指向该帖子的链接 我尝试在 Google 和 stackoverflow 上搜索代码 但没有
  • 连接 gsub [重复]

    这个问题在这里已经有答案了 我当前正在运行以下代码来清除数据中的重音字符 df lt gsub A df df lt gsub E df df lt gsub I df df lt gsub O df df lt gsub U df df
  • 解组字符串化的 json

    我正在尝试使用嵌套 json 来解组 json 我正在使用这个结构 type atomRequest struct Stream string json stream Data map string interface json data
  • 为什么当触摸手势持续很短时间时,UITableViewCell 上的 UIButton 只会绘制得更暗

    快速按下按钮并且短时间按住按钮不会突出显示 不同于一个UIButton在一个共同的UIView 就像官方 Twitter 客户端中的头像一样出现了同样的问题 Instagram 客户端似乎解决了这个问题 所有按钮都工作正常 在这里找到同样的
  • NSData:在解包可选值时意外发现 nil

    这可能是基本的 swift 问题 但我是 swift 或 iOS 开发的新手 我收到错误fatal error unexpectedly found nil while unwrapping an Optional value 对于下面的函
  • 如何使用 Intel 内在函数检查 CPU 是否支持 AVX 扩展?

    我正在使用英特尔内在函数编写程序 我想用 mm permute pd内在的 仅在具有 AVX 的 CPU 上可用 对于没有 AVX 的 CPU 我可以使用 mm shuffle pd但根据规格 它比 mm permute pd Intel
  • 客户端可以取消 Web Api 请求吗?

    我的 Web api 控制器中有以下方法 长时间运行的方法支持取消令牌 即如果请求取消 它们将不会运行 public async Task
  • MahApps - 如何禁用默认按钮的自动大写

    我已经开始介绍了MahApps Metro 真的很棒 在我的 WPF 应用程序中 我最喜欢的按钮是默认按钮 问题是它把我的所有文本都变成大写 而我不想要它 您可以通过设置所有按钮的属性来覆盖默认值Window Resources
  • 从给定坐标提取 PDF 文本

    我想使用 Ghostscript 从 PDF 的一部分 使用坐标 中提取文本 谁能帮我吗 是的 有了 Ghostscript 您can从 PDF 中提取文本 但不 它不是完成这项工作的最佳工具 不 您不能在 部分 单个页面的部分 中执行此操
  • 如何在 Ubuntu 中使用 postgres 允许访问 CSV 文件

    我正在使用以下命令 copy select so name so date order sol name sol product Id sol product uom qty ai number ai date invoice so amo
  • 我无法修复 GUI 的小问题。 JTextFields

    Small error I can t manage to do So right now my program GUI looks like this 现在 标记 列下有一个文本字段 用户可以在其中输入数据 如果我想在 重量 列下方插入一