【问题标题】:Why is there no CSS-like GUI creator [closed]为什么没有类似 CSS 的 GUI 创建器 [关闭]
【发布时间】:2011-04-10 03:23:52
【问题描述】:

好的,所以这可能会被关闭或其他什么,我不在乎。我不得不这么说,因为它让我非常沮丧。

曾几何时,我从 html/css/php 背景进入应用程序开发的深渊。我在 Java 的山谷中漫步,探索 C# 的奥秘。我惊叹于 Ruby 的美丽,为 Bash 的顽固简单而倾倒,不时回来拜访我的老朋友 HTML、CSS 和 PHP。

直到我开始寻求用 Java 创建桌面应用程序时,我才对为了使应用程序在外观和感觉方面或多或少的用户友好而不得不经历的痛苦和折磨感到震惊。

我被困在了 LayoutManagers、Docking 参数以及 java.swing 和同伴大门之外的任何邪恶生物的噩梦中。

此时,我感到一个想法在我体内孕育。正如科布所说; 什么是最有弹性的寄生虫?细菌?病毒?肠道蠕虫?一个主意。有弹性……传染性很强。一旦一个想法占据了大脑,就几乎不可能根除。一个完全形成——完全理解——坚持下去的想法;就在某处。 - 你知道,有点意思。

我在想,为什么不能像我的好友 CSS 那样简单。像这样的布局,使用边距、边框、浮动等等。

现代网络应用程序完全是用纯粹、简单、易用的 CSS 设计的。我是否想为我的桌面应用程序提供同样的功能?当我写这篇文章时,两者之间的差距越来越小。有些网页比大多数业余程序员一生写的任何东西都要复杂得多。

我只是不明白为什么 GUI 创建必须如此大惊小怪。可能只是因为我来自不同的背景,习惯了类似CSS的样式,所以只有我有这种感觉,但仍然;

没有人想过这个吗?创建一个 CSS 解析器来设置 GUI 样式会这么难吗?使用与 Web 开发完全相同的方法?类、ID、选择器等。创建它的最大困难是什么?

有没有人和我一样的感觉?

或者(什么会很尴尬)有这样的工具,我只是太笨了找不到它?

【问题讨论】:

  • 在那里试试visual studio,你至少可以尝试将css设计器集成到asp.net中。
  • 我正在使用 Visual Studio,这还不错,但是一旦您尝试创建可以灵活调整大小等的复杂布局,它就会遇到与其他所有 gui 设计师相同的问题。
  • StackOverflow 不是博客。请重写您的帖子以提出可以明确回答的特定问题。
  • 你不会得到更好的
  • 我喜欢你写问题的方式!

标签: css user-interface


【解决方案1】:

Microsoft NET 的 WPF(Windows Presentation Foundation)是一种类似于 HTML + CSS 的 GUI 创建解决方案。

IMO,它比 HTML 更通用,但仍然易于使用(并创建可读的 GUI 代码)。

定义布局就这么简单:

<DockPanel>
    <Label Content="Dock Panel Layout Demo" 
    FontSize="15" FontWeight="Bold" Background="LightBlue"
    Foreground="Blue" DockPanel.Dock="Top"/>

    <Label Content="Footer" FontSize="15" FontWeight="Bold" 
           Background="LightGray"
           DockPanel.Dock="Bottom" />

    <Label Content="Left Pane" FontSize="15" FontWeight="Bold"
           Width="125" Background="Firebrick"
           DockPanel.Dock="Left"/>

   <Label Content="Content Pane" FontSize="15" FontWeight="Bold"
           Width="255"
           Background="Beige"/>

    <Label Content="Right Pane" FontSize="15" FontWeight="Bold"
           Width="125" Background="Khaki"
           DockPanel.Dock="Right"/>
</DockPanel>

和样式:

<Window.Resources>
    <Style x:Key="myStyle" TargetType="Button">
       <Setter Property="Background" Value="Orange" />
       <Setter Property="FontStyle" Value="Italic" />
       <Setter Property="Padding" Value="8,4" />
       <Setter Property="Margin" Value="4" />
    </Style>
</Window.Resources>

【讨论】:

  • 我知道 WPF,但我想我并没有真正明确我想要什么;一种使用 无设计器 设计 GUI 的方法 我想完全控制我的 GUI 的外观,而不必使用拖放式设计器。没有人使用设计师来创建 HTML/CSS 布局,为什么桌面程序员会这样做?
  • 我没有使用设计器来编写 WPF 的 XAML 代码。 IMO 设计器比手写代码慢。这就是让我着迷于 WPF 的原因——Visual Studio 的 WinForms 设计器文件时常中断,迫使我使用备份。 WPF 没有这样的危险。
  • 您可以手动编写 XAML。您根本不必使用设计器。
  • @doc:XML 对于人类和机器来说都很容易阅读,您还想要什么?是的,它非常冗长,但这是保持可读性和多功能性所必需的。
  • @commanderz "XML 对人和机器来说都很容易阅读" - 除非您开始使用 XSL、XQuery、XPath、WSDL... 4:0 用于机器。你可以称我为种族主义者,但为什么要考虑机器?福……机器是为我们工作的! XML 擅长保存分层数据,仅此而已。创建像DockPanel.Dock=Left 这样的间接引用滥用这种格式。
【解决方案2】:

Mozilla 的基于 XML 的语言 XUL 使用 CSS 作为 gui 布局的工具。他们有一篇关于“Skinnable XUL and CSS”的文章。 :)

【讨论】:

  • XUL 甚至可以用于带有 XULRunner 的独立应用程序。
  • 这样你就可以了。 XULRunner == 独立的“基于网络”的应用程序。
【解决方案3】:

在 Qt 应用程序中,您可以使用类似 CSS 的语法,称为 QSS。
下一个版本还将有一个“声明式 UI”,称为 QML。

WPF 和 Silverlight 还为其 UI 使用基于 XML 的声明性语言,称为 XAML。

【讨论】:

    【解决方案4】:

    “纯粹、简单、易用的 CSS”

    我怀疑您是否做过任何跨浏览器、可访问、与浏览器无关的网站/应用程序。

    事实比你想象的要痛苦得多。

    我将永远感激不再使用另一个“盒子模型黑客”。

    【讨论】:

    • 你真的明白了;)
    • @ApoY2k - 这可能是真的,但是拥有一个没有人以相同方式解释的标准有什么意义呢?静音点,因为实际上我们最终会满足每种口味。我了解闪存从哪里抢占市场份额
    • @ApoY2k:我记得当我试图达到一些效果时,即使 CSS 按预期工作时也是如此。 CSS 擅长定义某些元素的外观,但在布局方面,CSS 确实是一个糟糕的工具。我很惊讶这个问题的作者想在 GUI 应用程序中使用 CSS 进行布局,而我愿意将 GUI 布局技术导入网络世界。
    【解决方案5】:

    这完全是一个观点问题。几十年来,我一直在做桌面应用程序开发。我认为 CSS 非常糟糕。创建一个像样的布局非常困难,真正的交互性是一种皇家痛苦。在我看来。

    现在,我主要使用 tcl/tk 和 python/wxpython,这使得 GUI 开发变得非常容易。我可以看到,如果您第一次尝试桌面 GUI 编程是 java,您会得出这样的结论。我不希望对任何人进行 Java GUI 编程。

    【讨论】:

    • 我不明白你为什么这么责备 Swing。它有什么不好?前段时间它很脏,但现在看起来好多了。也许它并没有带来最好的用户体验,但它很容易写进去。现在除了 AWT 和 Swing 之外,Java 中至少还有 SWT 和 Jambi。但是对于 CSS 布局批评者 +1(阅读我上面或现在下面的帖子)。
    • @doc:举个例子:Swing 有八个左右的布局管理器(BorderLayout、BoxLayout、GridBagLayout 等)。每个都不同,每个都有些难以使用。将其与恰好有三个(并且只有两个常用的)的 Tk 进行比较。有了这三个,我可以复制 Swing 可以做的任何布局,而且代码行数要少得多。这就是我不喜欢 Swing 的原因。不是你不能用它做很多事情,只是它需要太多的代码行来完成任何事情。
    • 我承认,gridbag 布局及其约束有点烦人。但毕竟在我看来它仍然比使用 CSS 构建布局要好。
    【解决方案6】:

    既然 HTML 和 Javascript 将成为编写面向用户的应用程序的通用且包罗万象的方式,何必费心呢^^

    另外,我并没有真正使用过 WPF,但它似乎涉及一种“声明式”UI 构建技术,以您描述梦想的方式,它扩展到 Silverlight 和各种 Microsoft 技术。他们不能孤军奋战……

    【讨论】:

    • 不,不会的。 Javascript 目前接近其能力的顶峰。
    • 这并不意味着 Web 应用程序不会越来越多地发展成为用于生产性工作的实际程序(它们会)
    • @doc webassembly
    • @GaretClaborn 是的,WebAssembly 是 Web 浏览器应该开始的东西。不过,我很害怕像基于 Web 的 VNC 这样的简单解决方案现在可以接管它。
    • @doc yea web socket 支持现在非常好,很快就会普及。不完全确定您建议如何使用 VNC 服务器来托管传统 UI 的多用户实例?我希望 Web 程序集能够通过成为客户端执行计算繁重任务的加速器而受到关注。如果它变得普遍,我可以看到它很快取代了 javascript,因为新语言的垫片是建立在它之上的。
    【解决方案7】:

    如果您没有固定在 java 上,WPF 及其 XAML 是您所描述的一种方法,将布局与逻辑分离,就像 CSS 与 HTML 一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-23
      • 2023-01-18
      • 1970-01-01
      • 2015-04-09
      • 2014-03-13
      • 2014-06-27
      • 2017-04-03
      • 1970-01-01
      相关资源
      最近更新 更多