【问题标题】:How to use netbeans Swing GUI builder如何使用 netbeans Swing GUI builder
【发布时间】:2017-08-13 17:53:00
【问题描述】:

我对 Netbeans 有疑问。它有一个非常好的用于 java swing 的 GUI 构建器,但生成的代码是不可更改的。为了解决这个问题,我尝试首先在面板中制作 GUI,让我们称之为 Asset 类,它有一个 JTabbedPane jTabbedPane1;

然后我从它扩展了一个新类,所以我拥有资产类中的所有 GUI,然后我可以随意更改它。

public class AssetHandler extends Asset{

    public AssetHandler(){

        System.out.println("Here is the asset");
        JFrame frame = new JFrame("FrameDemo");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.getContentPane().add(jTabbedPane1);
        frame.pack();
        frame.setVisible(true);
    }
}

但它抱怨:

jTabbedPane1 has private access in Asset

实际上,这个错误对我来说没有意义,因为我继承了它。

那么,我该如何操作生成的代码呢?

【问题讨论】:

  • 好的,这就是你要做的。您将放下表单编辑器并离开它,是的,它是一个很棒的工具,但是在您了解 UI 是如何构造函数并学习一些用于制作复杂、多层次代码的技术之前,它会让您懒惰,给你带来无穷无尽的问题。相反,从How to create GUIs in Swing 开始并开始手工制作 UI,它会让您更好地了解表单编辑器何时有用以及如何利用它
  • 一旦你知道你在找什么,你可以编辑相关的代码生成对话框,example。另请参阅approach

标签: java swing netbeans


【解决方案1】:

子类不能直接访问超类的私有变量。当您创建 Asset 类时,要么将 jTabbedPanel 声明为受保护(而不是私有),要么向该类添加 getTabbedPanel() 方法。

【讨论】:

  • 自动生成为private
  • @Salman 如果您不理解 Fred 的答案,那么在开始复杂的图形用户界面编程世界之前,您需要学习更多的东西。 Fred 建议在您的 Asset 类中创建一个返回 jTabbedPane1 值的方法,它不会影响生成的代码
  • @MadProgrammer 我理解他的回答,我的回答是正确的。 jTabbedPane1 的封装自动设置为private,我无法更改。他将private更改为protected
  • 但是您可以编写一个返回它的方法! public JTabbedPane getTabbedPanel() { return jTabbedPane1; } Asset 课程中!如果没有更多关于如何设置代码的上下文,没有什么可以建议的(除了不要使用表单编辑器)
  • @MadProgrammer 我尊重你的声誉。感谢您的建议,但我知道基本的,但是这个 Netbeans 编辑器有点挑战性,所以我只是想也许我走错了路。我只是想,也许netbeans团队已经设置了一个非常简单的解决方案,我找不到它。但是,现在我已经解决了我的问题,我会回答。
【解决方案2】:

我找到了答案。

不可能更改 Netbeans 生成的代码,或者至少我没有找到它。

相反,Netbeans 为您提供了一个 GUI 来添加事件,然后为您需要的任何类型的事件添加代码。

换句话说,当您使用 Netbeans GUI builder 时,您也必须将您的作品分成两个不同的部分

1) 设计:这部分可以通过 GUI builder 轻松完成

2)添加事件:(Action perform、Listenner 等)您可以使用 GUI builder 生成事件,然后您可以编写代码来处理事件。这是唯一一个您可以添加自己的代码的地方。

在我看来,NetbeansEclipse SWING 的 GUI builder 插件要好得多。

【讨论】:

  • 另外值得注意的是,您可以手动为您的 GUI 构造一些对象,然后将它们添加到:swingPanel.add(myObject)。同样,您可以强制转换 GUI 对象,以便可以手动访问它们:myButtons[0] = swingButton; 这对于迭代很有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 2013-08-18
  • 1970-01-01
  • 2020-04-01
  • 1970-01-01
  • 2012-07-26
  • 2012-11-02
相关资源
最近更新 更多