我目前正在开发一个自助服务终端风格的Java程序来显示天气,时间,预测等.这是一个程序应该是什么样子的镜头(在更新时间之前拍摄的截图)

各个部分创建为JPanels,并paintComponent()重写了方法.它们绘制渐变标题和半透明背景.但是,当我更改其中一个面板的内容时,之前的内容会被遗忘,而不是被删除.一个例子如下所示:
如你所见,当时间从11:51变为11:52时,数字重叠,背景变得更亮(因为半透明背景被重新绘制)

我该怎么做才能防止这种重叠?最终,当单个面板更新其内容时,我宁愿不必重绘整个屏幕.我宁愿只重绘那个特定的部分.重新绘制背景,然后是其中的所有组件将很容易.
几个答案涉及清除要绘制的区域.我是否使用g.clear()或AlphaComposite.CLEAR删除背景图像.这可以在下图中看到.也许如果我可以在清除区域之前复制背景,我可以重新绘制背景的那一部分,然后适当地分层其他图像.思考?

提交了一个答案,其中显示了在透明面板和背景上放置的计时器的完整工作示例.这非常有用,但是,我不是手动绘制我的子组件.时间,天气图标和温度都是JLabel布局在半透明面板上.我宁愿不必手动绘制单个组件.
我希望沿容器底部动态对齐以下两个元素,使它们占据相对的角落.类似于底部对齐Stackoverflow Logo和Ask Question底部对齐,但在其容器的相对角上.
你可以在这里看到JFiddle测试用例:http://jsfiddle.net/M5BuZ/

更有趣的是,我希望在没有为right元素添加固定边距空间的情况下工作.这样,如果left元素的高度增加,则将保持对齐.
因此,我正在尝试为一组轴约束定义一个架构。因此,我想将“ axis”元素的可能值限制为[“ x”,“ y”,“ z”]。
这是我当前的示例,它是输出。
{
"name_patterns": [
{
"regex": "block[_-]?([\\d]*)",
"class": "block",
"id_group": 1
}
],
"relationships": [
{
"src_class": "block",
"dst_class": "block",
"constraints": {
"axis": "x"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"name_patterns": {"type": "array",
"items": { "$ref": "#/definitions/name_entry" } },
"relationships": {"type": "array",
"items": { "anyof": [ {"$ref": "#/definitions/relation"} ] } }
},
"definitions": {
"name_entry": {
"type": "object",
"properties": {
"regex": {"type": "string"},
"class": {"type": "string"},
"id_group": {"type": …Run Code Online (Sandbox Code Playgroud)