第一次尝试简单的 GUI

2024-02-09

我正在尝试自学如何使用 Java swing 和 Window Builder Pro 制作 GUI,在观看了几个 youtube 视频并阅读了一些教程后,我已经完成了以下任务。

import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.JPanel;
import javax.swing.SpringLayout;
import javax.swing.JTextPane;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;


public class JetstreamFrame extends JFrame {

private static final long serialVersionUID = 1L;
JTabbedPane tabPane;

JPanel buttonOnePanel;
JPanel buttonTwoPanel;
JPanel textDisplayPanel;
JTextPane textPane;
SpringLayout sl_textDisplayPanel;
SpringLayout springLayout;
SpringLayout sl_buttonTwoPanel;
SpringLayout sl_buttonOnePanel;
JButton ButtonTwo;
JButton ButtonOne;

public JetstreamFrame() {
    springLayout = new SpringLayout();
    getContentPane().setLayout(springLayout);

    tabPane = new JTabbedPane(JTabbedPane.TOP);
    setupTabPane();

    buttonOnePanel = new JPanel();
    sl_buttonOnePanel = new SpringLayout();
    setupButtonOnePanel();

    ButtonOne = new JButton("Click Here!");
    setupButtonOne();

    buttonTwoPanel = new JPanel();
    sl_buttonTwoPanel = new SpringLayout();
    setupButtonTwoPanel();

    ButtonTwo = new JButton("Click Here!");
    setupButtonTwo();

    textDisplayPanel = new JPanel();
    sl_textDisplayPanel = new SpringLayout();
    setupTextDisplayPanel();

    textPane = new JTextPane();
    setupTextPane();

}

private void setupTabPane()
{
    springLayout.putConstraint(SpringLayout.NORTH, tabPane, 0, SpringLayout.NORTH, getContentPane());
    springLayout.putConstraint(SpringLayout.WEST, tabPane, 0, SpringLayout.WEST, getContentPane());
    springLayout.putConstraint(SpringLayout.SOUTH, tabPane, -198, SpringLayout.SOUTH, getContentPane());
    springLayout.putConstraint(SpringLayout.EAST, tabPane, 484, SpringLayout.WEST, getContentPane());
    getContentPane().add(tabPane);
}

private void setupButtonOnePanel()
{
    tabPane.addTab("Tab One", null, buttonOnePanel, null);
    buttonOnePanel.setLayout(sl_buttonOnePanel);
}

private void setupButtonOne()
{
    ButtonOne.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) 
        {

        }
    });
    sl_buttonOnePanel.putConstraint(SpringLayout.NORTH, ButtonOne, 99, SpringLayout.NORTH, buttonOnePanel);
    sl_buttonOnePanel.putConstraint(SpringLayout.WEST, ButtonOne, 187, SpringLayout.WEST, buttonOnePanel);
    buttonOnePanel.add(ButtonOne);
}

private void setupButtonTwoPanel()
{
    tabPane.addTab("Tab Two", null, buttonTwoPanel, null);
    buttonTwoPanel.setLayout(sl_buttonTwoPanel);
}

private void setupButtonTwo()
{
    ButtonTwo.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) 
        {

        }
    });
    sl_buttonTwoPanel.putConstraint(SpringLayout.NORTH, ButtonTwo, 99, SpringLayout.NORTH, buttonTwoPanel);
    sl_buttonTwoPanel.putConstraint(SpringLayout.WEST, ButtonTwo, 187, SpringLayout.WEST, buttonTwoPanel);
    buttonTwoPanel.add(ButtonTwo);
}

private void setupTextDisplayPanel()
{
    springLayout.putConstraint(SpringLayout.NORTH, textDisplayPanel, 6, SpringLayout.SOUTH, tabPane);
    springLayout.putConstraint(SpringLayout.WEST, textDisplayPanel, 0, SpringLayout.WEST, getContentPane());
    springLayout.putConstraint(SpringLayout.SOUTH, textDisplayPanel, -10, SpringLayout.SOUTH, getContentPane());
    springLayout.putConstraint(SpringLayout.EAST, textDisplayPanel, 0, SpringLayout.EAST, getContentPane());
    getContentPane().add(textDisplayPanel); 
    textDisplayPanel.setLayout(sl_textDisplayPanel);
}

private void setupTextPane()
{
    sl_textDisplayPanel.putConstraint(SpringLayout.NORTH, textPane, 0, SpringLayout.NORTH, textDisplayPanel);
    sl_textDisplayPanel.putConstraint(SpringLayout.WEST, textPane, 0, SpringLayout.WEST, textDisplayPanel);
    sl_textDisplayPanel.putConstraint(SpringLayout.SOUTH, textPane, 182, SpringLayout.NORTH, textDisplayPanel);
    sl_textDisplayPanel.putConstraint(SpringLayout.EAST, textPane, 0, SpringLayout.EAST, textDisplayPanel);
    textDisplayPanel.add(textPane);
}

public void start()
{
    this.setSize(500, 500);
    this.setVisible(true);
}

}

这段代码的前提是创建一个带有多个选项卡的窗口,以及底部的文本区域,无论用户位于哪个选项卡中,该文本区域都是可见的。我已经创建了文本区域、选项卡、按钮以及该 GUI 的按钮事件侦听器。

不幸的是,我读过的教程都没有向我展示如何将任何内容打印到文本区域。我想要一些类似的东西

System.out.println();

附加到每个按钮,并在文本区域中显示该打印,但我不知道如何实现这一点。

我还想知道如果打印的文本超出可见框架,我创建的文本区域是否会导致侧面出现滚动条。


textpane.append("TEXTHERE");

将根据以下内容将任何需要的文本添加到您的文本区域event。什么时候我们append()文本 我们还可以将新文本添加到现有段落中。如果您想清除JTextArea那么我建议您致电setText() method.

A JScrollPane需要将滚动条添加到JTextArea可以通过以下方式完成:

import javax.swing.JScrollPane;
JScrollPane scrollPane = new JScrollPane(TEXTAREAHERE);

就我个人而言,我喜欢将滚动窗格的属性设置为此,以确保 JScrollBar 只能向上和向下滚动并删除向左和向右滚动:

scrollPane.setHorizonalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

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

第一次尝试简单的 GUI 的相关文章

随机推荐

  • 为什么环境变量在 FOR 循环内没有更新?

    我有一个正在扫描文件的批处理文件URLs txt对于每个 url 运行它并下载文件 我遇到的问题是 FOR 循环中的环境变量 我在用cat sed and awk获取 url 的最后两部分 以便我可以提供文件名 问题是环境变量在第一次运行后
  • Ojdbc8 jars升级到21.1.0.0抛出Nosuchmethod异常UCPservletContextListener init

    Ojdbc8 ons ucp jar 已升级到 21 1 0 0 版本 当尝试在 tomcat 服务器上启动应用程序时 它抛出 Nosuchmethod 异常 登录Tomcat的localhost log文件 应用程序尝试在启动期间建立数据
  • 套接字编程-setsockopt:协议不可用?

    我正在用 C 语言进行一些基本的套接字编程 并且在尝试运行代码的每台计算机上都会遇到此错误 代码编译得很好 但是当我尝试运行它时 我收到错误setsockopt 协议不可用 这似乎不是一个很常见的错误 但我尝试运行它的每台计算机上都会遇到这
  • 如何创建二维以上的 pandas 数据框?

    我希望能够创建n dimensional数据框 我听说过一种使用 3D 数据帧的方法panels in pandas但是 如果可能的话 我想通过将不同的数据集组合成一个 将维度扩展到超过 3 个维度超级数据框 我尝试了这个 但我不知道如何在
  • 是否可以从 vb.net dll 中的 dll 导入 c# 类?

    集成开发环境 VS2010 框架网 4 0 我在 Visual Studio 2010 下创建了一个 C dll 项目 其中包含几个公共类 我想在另一个 dll 项目中使用它的类 但用 vb net 编写 在vb net dll项目中 我引
  • 禁用所有 jquery datepicker 输入的自动完成功能

    我想禁用autocomplete对于使用 jquery ui datepicker 的所有输入 无需手动对每个输入执行此操作 这怎么可能做到呢 尝试这个 datepicker on click function e e preventDef
  • 两个字段的唯一约束及其相反

    我有一个数据结构 必须在其中存储元素对 每对恰好有 2 个值 因此我们使用一个表 其中包含字段 左值 右值 这些对应该是唯一的 如果密钥发生更改 它们将被视为相同 Example Fruit Apple is the same as App
  • 从 ASP.NET 应用程序获取入口程序集 [重复]

    这个问题在这里已经有答案了 可能的重复 用于 Web 应用程序的 GetEntryAssembly https stackoverflow com questions 4277692 getentryassembly for web app
  • 使用 int 13h 读取的扇区数量多于磁道上的扇区数量

    顺序是什么int 13h with ah 02h会读19部门起始于 C H S 0 0 1 提供了 2 个磁头 每磁道 18 个扇区 每面 80 个磁道的 软盘 磁盘几何结构 或者 更一般地说 当它到达磁道 0 的末尾 磁头 0 时会发生什
  • 如何处理数据透视表中的重复条目以及如何在 Excel 仪表板中填充查询

    我有两张桌子capacity and demand 容量表如下所示 RESOURCE NAME SKILL GROUP PROJECT START DATE END DATE COST PER HOUR CAPACITY Resource
  • 分片数据库的 ID 生成(Azure 联合数据库)

    我一直在寻找一些有关 Azure 联合数据库 id 生成 联合 主键 最佳实践的文章或指南 但没有发现任何引人注目的内容 联合表不支持标识列 因此在我看来唯一实用的 id 类型是 GUID 因为尝试集中创建和使用 BigInt 会在应用程序
  • 将 xib 文件替换为 App 委托类中的 Main.storyboard 文件

    现在项目正在应用程序委托类中使用 MainWindow xib 作为主 nib 文件 main m 文件中有此代码 int main int argc char argv NSAutoreleasePool pool NSAutorelea
  • Bootstrap 4 的数据表看起来很混乱

    当尝试将 Datatables 与 Bootstrap 4 一起使用时 它看起来不太好 我尝试遵循数据表网站上的基本示例 但它看起来仍然像这样 请参见下面的屏幕截图 我链接到 Datatables 在其自定义页面上提供的文件 这是我的 ht
  • GWT/GXT 标签编辑器? [复制]

    这个问题在这里已经有答案了 我正在寻找基于 GWT 或 GXT 的标签编辑器控件 类似于http tagedit webwork albrecht de http tagedit webwork albrecht de or http le
  • Bean 方法验证

    public class Register NotNull private String password NotNull private String passwordRepeat AssertTrue private boolean c
  • 使用 Java 1.6 和 Windows 7 操作系统进行深度递归时出现 java.lang.StackOverflowError

    我有一个程序 在执行时会遇到非常深的递归 在这中间 我得到java lang StackOverflowError我的应用程序冻结了 我使用的是 JDK 1 6 和 Windows 7 操作系统 奇怪的是 我不明白这个StackOverfl
  • 与内存相关的“竞技场”一词的含义是什么?

    我正在读一本关于内存作为编程概念的书 在后面的一章中 作者大量使用了这个词arena 但从未定义它 我搜索了这个词的含义以及它与记忆的关系 但一无所获 以下是作者使用该术语的一些上下文 序列化的下一个例子采用了一种称为 从特定的内存分配ar
  • iPhone 应用程序在后台运行 10 分钟后终止

    我正在开发一个需要在 iOS4 上后台运行的应用程序 我 希望它像常规的基于位置的应用程序一样 因此背景模式是 设置为位置 应用程序进入后台后运行良好 状态 但 10 分钟后 它不再响应 或许它 被暂停 终止 我想做的是永远在后台运行应用程
  • 为什么我不能在任何方法之外修改类成员变量? [复制]

    这个问题在这里已经有答案了 我有一个带有一些变量的类 当我在主类中实例化该类的对象时 我只能访问和修改一个方法中的成员变量 任何方法 不在他们之外 这是为什么 我被困住了 似乎无法在谷歌上找到答案 class SomeVariables S
  • 第一次尝试简单的 GUI

    我正在尝试自学如何使用 Java swing 和 Window Builder Pro 制作 GUI 在观看了几个 youtube 视频并阅读了一些教程后 我已经完成了以下任务 import javax swing JFrame impor