2013-01-01 58 views
1

所以,我在Java中使用图形用户界面,因为就个人而言,我不能忍受的GUI总是避免。但是,我已经开始要求我使用图形用户界面,以及令人惊讶,我有问题的项目。我有这段代码..浮动按钮是AWT?

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); 
    } 
} 

..它创建一个具有1280×720的窗口一个黑色的背景(这是很好的),它也会在屏幕的左上角创建一个浮动按钮。如何让按钮在窗口中?

+1

你为什么不使用Swing? – Doorknob

+1

在添加按钮(或其他任何东西)前,用非空参数调用'this.setLayout'。删除comp.setLocation和comp.setSize行;布局的工作是根据按钮的尺寸需求找出合适的尺寸。你应该使用哪种布局类是一个单独的(和长期的)讨论;你需要阅读每个人的javadoc,你可能会觉得厌烦,因为你不喜欢图形用户界面,但并不是那么多,这对于GUI开发来说是绝对必要的。 – VGR

+1

以下是http://stackoverflow.com/questions的读者可以看到的所有问题:“所以,我总是避免在java中使用GUI,因为我个人无法忍受GUI。但是,我开始了一个需要我使用GUI的项目,而且,毫无疑问,我遇到了问题......我有这个......“。你不希望他们看到一些开始的“我有这么一点GUI代码”,然后是你的问题的有意义的提取? –

回答

4

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

我认为你真正想要的是创造一个且只有一个框架。你的类不应该扩展Window,所有这些都不应该在构造函数中完成。而且,AWT已经过时了。你应该使用Swing。 Oracle有一个关于Swing的很好的教程,它也解释了如何使用布局管理器(你应该这样做)。 Read this tutorial

+0

我不能忍受Swing的样子..它看起来非正式,blobby,只是粗暴..在我看来。我宁愿使用至少类似于人们习惯使用的东西。不摆动..除非有办法让摆动使用不同的,更好看的按钮和文本框,下拉列表以及所有其他表单元素。 –

+1

然后使用系统外观和感觉,这将使您的Swing应用看起来像原生应用程序一样。 http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/ –

+0

好吧,我会那样做的。谢谢。 –

2

就个人而言,我会使用基于Swing组件在AWT(个人),二话不说,也有更多的组件和支持。

contained是无效的参考,你不需要它。您创建两个窗口,只显示没有按钮的窗口。删除参考框架,并依靠窗口代替

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); 
} 

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

也将运行布局管理器的犯规,这意味着你提供给该按钮的设置可能会被改写。

我会花时间通过Creating a GUI With JFC/Swing

0

Q可阅读:那么,在Java中使用图形用户界面,因为,我个人 无法忍受的GUI我一直避免。

答:嘿,我还以为我独自一人在这个星球上:)我的座右铭一直是“GUI的使简单的任务更容易......而艰巨的任务完全不可能的”;)

至于你问题:答案是:

1)Swing是一个很好的 “胖客户端”(即Java桌面应用程序)

2)JSP是良好的“Web应用程序)(即客户端/服务器Web应用程序)

3)甚至不要认为关于使用AWT为您的整个GUI。它在Java历史上很早就被弃用了(特别是Java 1.2)。

这里有一些很好的教程:

PS: 尽管我说过的GUI ...和IDE可以是非常有帮助的。

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

  • 的Eclipse(最喜欢的IDE),可用于CMD线,秋千,JSP和Java EE应用程序。

  • 的Eclipse(与Netbeans的或的IntelliJ)是同样有用的Android应用

  • Eclipse有第三方插件的非常广泛的生态系统(从公司等不同的IBM和谷歌)。

恕我直言...