1

所以,我一直避免在 java 中使用 GUI,因为就我个人而言,我无法忍受 GUI。但是,我已经开始了一个需要我使用 GUI 的项目,而且,不出所料,我遇到了问题.. 我有这段代码..

public class DefaultWindow extends Window
{
    private DefaultWindow(Frame owner)
    {
        super(owner);
        contained = owner;
    }
    public DefaultWindow()
    {
        this(new Frame(""));
        contained.setBackground(Color.black);
        contained.setLocation(0, 0);
        contained.setSize(1280,720);
        Button comp = new Button("Hello");
        comp.setLocation(0, 0);
        comp.setSize(10, 10);
        add(comp);
        pack();
        contained.setVisible(true);
    }
}

.. 它创建了一个黑色背景的 1280x720 窗口(这很好),它还在我屏幕的左上角创建了一个浮动按钮.. 如何使按钮位于窗口中?

4

3 回答 3

4

您正在创建一个 Window 子类的实例,该实例在其构造函数中创建一个 Frame(它本身就是一个 Window)。您正在显示这个空框架,并将按钮添加到您正在创建的窗口中。所以最后你有两个窗口。

我认为您真正想要的是创建一个且只有一个 Frame。你的类不应该扩展 Window,所有这些都不应该在构造函数中完成。此外,AWT 有点过时了。您应该使用 Swing。Oracle 有一个很棒的关于 Swing 的教程,顺便说一句,它还解释了如何使用布局管理器(你应该这样做)。阅读本教程

于 2013-01-01T21:12:53.737 回答
2

就个人而言,我会(个人)在 AWT 上使用基于 Swing 的组件,除此之外,还有更多的组件和支持。

contained是一个无效的参考,你不需要它。您创建了两个窗口,只显示一个没有按钮的窗口。删除对 Frame 的引用并改为依赖窗口

public DefaultWindow()
{
    setBackground(Color.black);
    setLocation(0, 0);
    setSize(1280,720);
    Button comp = new Button("Hello");
    setLocation(0, 0);
    comp.setSize(10, 10);
    add(comp);
    pack();
    setVisible(true);
}

我会避免将窗口设置为任意大小,并非所有屏幕都相同。

您还将违反布局管理器,这意味着您提供给按钮的设置可能会被覆盖。

我会花时间阅读使用 JFC/Swing 创建 GUI

于 2013-01-01T21:13:42.730 回答
0

问:所以,我一直避免在 java 中使用 GUI,因为就我个人而言,我无法忍受 GUI。

A:嘿:我以为我在这个星球上是孤独的 :) 我的座右铭一直是“GUI 让简单的任务更容易……而困难的任务完全不可能”;)

至于你的问题:答案是:

1) Swing 适合“厚客户端”(即 Java 桌面应用程序)

2) JSP 适用于“Web 应用程序”(即客户端/服务器 Web 应用程序)

3) 甚至不要考虑在整个 GUI 中使用 AWT。它在 Java 历史的早期就被弃用了(特别是 Java 1.2)。

这里有一些很好的教程:

PS:尽管我说了关于 GUI 的内容……但 IDE 可能非常有帮助。

就个人而言,我使用 Eclipse。有几个原因:

  • Eclipse(与大多数 IDE 一样)可用于 cmd-line、Swing、JSP 和 Java EE 应用程序。

  • Eclipse(与 Netbeans 或 IntelliJ 不同)对 Android 应用程序同样有用

  • Eclipse 拥有极其广泛的 3rd 方插件生态系统(来自 IBM 和 Google 等公司)。

恕我直言...

于 2013-01-01T21:17:48.357 回答