我想知道在Java中是否有任何关于声明性GUI编程的建议.(我厌恶基于视觉的GUI创建者/编辑器软件,但我对手动实例化JPanels和Boxes以及JLabel和JLists等感到有些厌倦)
这是我的整体问题,但对于我正在考虑的方法,我有两个具体的问题:
JavaFX:JavaFX中是否有一个真实GUI显示的示例(例如,不是圆形和矩形,但是列表框和按钮以及标签等),它可以与访问和更新各种元素的Java源文件连接?
简单的旧Swing有一些东西要解析XUL-ish XML:有没有人发明过一种用于Java的声明性语法(如XUL)用于Java Swing?我想,要创建一些基于STaX的代码来创建一些代码,实例化Swing元素的层次结构,并通过某种对象模型访问层次结构,我认为这并不难.但我宁愿使用一些众所周知,记录和测试的东西,而不是试图自己发明这样的东西.
JGoodies表格 - 不完全是声明性的,但有点接近我和JGoodies Binding有好运.但他们的表单布局的语法似乎有点神秘.
编辑:这里有很多很棒的答案!(我在上面添加了#3)我特别感谢您在使用其中一个框架进行实际应用时获得的任何经验.
ps我尝试了一些谷歌搜索("java gui declarative"),只是不太清楚要找什么.
如何在android中的EditText中只输入字母?
有没有办法从XML布局设置NumberPicker的最小值,最大值和默认值?
我是在Activity代码中做的:
np = (NumberPicker) findViewById(R.id.np);
np.setMaxValue(120);
np.setMinValue(0);
np.setValue(30);
Run Code Online (Sandbox Code Playgroud)
XML显然更合适,因为它定义了属性,而不是行为.
有没有办法使用XML布局设置这些?
我想在EditText旁边放一个按钮,我希望它们的高度匹配.
例如,从内置的Android浏览器:

Go按钮与EditText字段的高度相同.我知道我可以在父布局视图中包装这两个视图,并将它们的高度设置为fill_parent,这将使它们匹配.但是,我想这样做而不必给布局一个静态大小.我希望EditText根据字体大小获取所需的任何高度,然后让它旁边的按钮匹配任何可能的高度.
这是否可以使用xml布局?
我知道表格是用于表格数据的,但是将它们用于布局是很诱人的.我可以处理DIV以获得三列布局,但是当你有4个嵌套DIV时,它会变得棘手.
有没有教程/参考来说服我使用DIV进行布局?
我想使用DIV,但我拒绝花一个小时将我的DIV/SPAN定位在我想要的地方.
@GaryF:Blueprint CSS必须是CSS最好的秘密.
伟大的工具 - Blueprint Grid CSS Generator.
我有一个垂直LinearLayout包含ImageView和一些其他布局和视图.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/banner_alt"
android:src="@drawable/banner_portrait" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/main_search"
android:gravity="center"
android:textStyle="bold" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Spinner
android:id="@+id/search_city_spinner"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:prompt="@string/search_city_prompt"
android:entries="@array/search_city_array" />
<Spinner
android:id="@+id/search_area_spinner"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:prompt="@string/search_area_prompt"
android:entries="@array/search_area_array" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Spinner
android:id="@+id/search_rooms_spinner"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:prompt="@string/search_rooms_prompt"
android:entries="@array/search_rooms_array" />
<Spinner
android:id="@+id/search_min_spinner"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:prompt="@string/search_min_prompt"
android:entries="@array/search_min_array" />
<Spinner
android:id="@+id/search_max_spinner"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:prompt="@string/search_max_prompt"
android:entries="@array/search_max_array" />
</LinearLayout>
<Button
android:id="@+id/saearch_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/search_button"
android:onClick="searchButton" …Run Code Online (Sandbox Code Playgroud) 我理解清单中的这些属性:
android:theme="@android:style/Theme.NoTitleBar"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
Run Code Online (Sandbox Code Playgroud)
可以删除标题栏.但是,当我修改我的应用程序时,我会不断检查图形布局.当我看到图形布局时,我仍然看到标题栏.我想以一种在游戏开发过程中不必看到它的方式删除标题栏.
android:textAlignment和之间有什么区别android:gravity?
我有一个布局,有三个字段用于输入三个地图坐标.到现在为止还挺好.我在布局中使用android:inputType ="numberDecimal".当进入该字段时,用户获得数字小键盘.还好.
但是,当需要输入负坐标时,没有明显的方法可以做到这一点.
23.2342工作正常.232.3421工作正常.无法输入-11.23423 - 无法输入前导负号,甚至无法将坐标包装在()中.
我确信我可以将其更改为直接文本inputType,然后使用正则表达式来验证输入的内容实际上是一个数字坐标,处理错误消息回发给用户等等.但是我会而不是去那条路.
我用谷歌搜索和Stackoverflowed这个问题几个小时没有运气.有什么建议?
我正在尝试使用可滚动的水平项(具有未知数量的项目)来实现表视图,如下图所示:

用户界面的行为应如下:
我想过使用TableView并dequeueReusableCellWithIdentifier创建一个原型单元格,但是我需要记住列表水平位置并正确启动单元格cellForRowAtIndexPath,这可能会影响性能.
问:为了实现这一目标,您将使用什么布局,任何输入/教程都将受到赞赏