好的,所以这可能会被关闭或者其他什么,我不在乎。我不得不这样说,因为它让我感到沮丧。
曾几何时,我从html / css / php背景进入了广泛的应用程序开发。我在Java的山谷中闲逛,探索了C#的奥秘。我厌倦了Ruby的美丽,堕落了Bash的顽固简洁,不时回来拜访我的老朋友HTML,CSS和PHP。
直到我想要用Java创建一个桌面应用程序,我才感到震惊,为了使应用程序在外观和感觉方面或多或少地用户友好,我必须经历的痛苦和痛苦。
我陷入了布局管理员的噩梦,停靠参数和任何犯规生物在java.swing和同伴的门外撒谎。
此时,我觉得有一种想法在我身上滋生。正如Cobb所说; 什么是最有弹性的寄生虫?菌?病毒?肠蠕虫?一个主意。弹性......具有高度传染性。一旦一个想法掌握了大脑,就几乎不可能根除。一个完全形成的想法 - 完全理解 - 坚持;就在某处。 - 你知道,那个想法。
我在想,为什么它不能像我的好友CSS那样简单。这样做,使用边距,边框,浮动等等。
现代网络应用程序完全采用纯粹,简单,简单的CSS设计。我是不是想要为我的桌面应用程序做同样的事情?当我写这篇文章时,两者之间的差距越来越大。有些网页比大多数业余爱好程序员一生都会写的要复杂得多。
我无法理解为什么GUI创建必须如此大惊小怪。可能只是因为我来自不同的背景并习惯了类似CSS的样式,所以只有我这样,但仍然如此;
有没有人想过这个?创建一个CSS解析器来设置GUI样式会不会很难?使用与Web开发完全相同的方法?类,ID,选择器等创建它的难度是什么?
有人甚至有同样的感觉吗?
或者(会有什么相当令人尴尬的)是否有这样的工具,而且我太愚蠢而无法找到它?
答案 0 :(得分:13)
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>
答案 1 :(得分:12)
Mozilla的基于XML的语言XUL使用CSS作为gui布局的工具。他们有一篇关于“Skinnable XUL and CSS”的文章。 :)
答案 2 :(得分:8)
在Qt应用程序中,您可以使用类似CSS的语法,称为QSS 下一个版本还将有一个名为QML的“声明性UI”。
WPF和Silverlight也为其UI使用基于XML的声明性语言,称为XAML。
答案 3 :(得分:7)
这完全是透视问题。几十年来我一直在做桌面应用程序开发。我认为CSS非常糟糕。创建一个体面的布局是非常困难的,真正的交互性是一种皇家的痛苦。在我看来。
现在,我主要使用tcl / tk和python / wxpython,这使得GUI开发变得非常简单。我可以看到,如果您第一次尝试使用桌面GUI编程,那么您会得出结论。我不希望任何人使用java GUI编程。
答案 4 :(得分:6)
“纯粹,简单,简单的CSS”
我怀疑您是否已经完成了任何跨浏览器,可访问,与浏览器无关的网站/应用程序。
事实比你想象的要痛苦得多。
我永远感激不再使用另一个“盒子模型黑客”。
答案 5 :(得分:4)
为什么要尽快打扰HTML和Javascript将成为编写面向用户的应用程序的通用和无所不包的方式^^
此外,我还没有真正使用WPF,但它似乎涉及一种“声明性”UI构建技术,就像你描述你的梦想一样,它延伸到Silverlight和各种微软技术。他们不能孤军奋战......
答案 6 :(得分:2)
如果你没有修复java,那么带有XAML的WPF就是你所描述的一种方法,将布局与逻辑分开,就像CSS与HTML一样。