2013年12月27日星期五

(原)java-我们能做啥 - 桀骜天涯

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
(原)java-我们能做啥 - 桀骜天涯  阅读原文»

1)前言

太多的语言,我们不可能一一全会。

快餐的开发,我们不可能一无接触。

在这样环境下,也许只有一种人可以过得很好。

那就是:有一门相当熟悉,精通的语言,博学多门其他语言,对于新接触的语言比别人学得更快,写的更好。

如果不把职业当成兴趣,那么每一天都是痛苦。

曾经碰见一人大骂JAVA除了写网站,啥也不能做,自己不该学JAVA,早知道学C。

于是问了下他听过JME做过和Swing么。那人一脸茫然。

我相信他学C后也会大叫:我考,C语言居然不能写网站。。

本人鄙视那种说控制不住自己要打游戏,看电影的人。

如果真心想学,PC换成linux,对于程序员这个不难吧?要是这都不会,还不能盖上程序员。

如果能在linux下继续能打魔兽,就算是装个wine,这都需要一定的折腾,玩3D游戏还得搞驱动。

在linux下播放视频还得安装解码器,播放音频,也得安装解码器,还得源码编译。

这都折腾出来了,还培养不出编码兴趣?

还记得本人多年前刚换上linux,不懂依赖,找了很多软件,都无法正常播放MP3和电影,于是励志自己写。

那时候刚接触java,一窍2不通,折腾后终于出现一个丑陋界面,好歹可以播放:

就这破玩意儿,得瑟了好久。

2)JAVA能干啥---底层

java能做底层,但最底层依旧是C,不过使用JNI调用C做底层的大有人在,本人曾经做过某公司的项目基于JAVA的远程控制。

有朋友在做POS机,java调用DELPHI与存储过错+JNI。

3)JAVA能干啥--桌面

是的,这是JAVA

这是园子里面一位仁兄做的。。

是的,这是JAVA开发的。

4)JAVA能做啥---服务器

中国农业银行:

招商银行:

中行:

5)JAVA路:

如果你选择了JAVA,又不想走上网站与服务器的道路:那么j2se--java3D--JME+LWJGL+JNI--Socket将是最好的选择

如果你选择了JAVA,仅仅在移动端:那么摆在面前的是数不清的引擎

如果你选择了JAVA,走上了服务器:这是一条大众的道路:

jsp+servlet+jdbc------>struts+hibernate+Spring --->SpringMVC+Hibernate --->WebService --> JAVA +JSON已经足够应付大多数公司

6)结束语

这只是很小很小的一部分,选择你所爱,爱你所选择,生活就是这样。

拿着我们手中的武器,打出最漂亮的仗。

以不变应万变,不管如何变,我始终学好自己手中的东西,再去看其他。

地球经历了这么多年,有没有变?没有变,因为如果变了,你我就活不到今天。


本文链接:http://www.cnblogs.com/bfchuan/p/3495102.html,转载请注明。

设置JavaFX-CSS改变TreeView节点图标 - lngrvr  阅读原文»

1. 实现以“+”、“-”表示节点图标

JavaFX中TreeView的默认节点图标如下图所示:

其中箭头向下表示展开,向右则表示合拢。

设置css就可以改变TreeView的样式。比如使用下面几行的css定义,就可以实现“+”表示合拢,“-”表示展开。

.tree-cell .tree-disclosure-node .arrow {
-fx-shape
: "M 0 -1 L 3 -1 L 3 -4 L 5 -4 L 5 -1 L 8 -1 L 8 1 L 5 1 L 5 4 L 3 4 L 3 1 L 0 1 z";
}

.tree-cell:expanded .tree-disclosure-node .arrow
{
-fx-rotate
: 0;
  -fx-scale-shape
: false;
-fx-shape
: "M 0 -1 L 7 -1 L 7 1 L 0 1 z";
}

这是改变后的效果:

2. JavaFX中默认TreeView样式定义

在JavaFX的com.sun.javafx.scene.control.skin.caspian的包中,有一个caspian.css文件,里面定义了JavaFX的默认样式。

打开文件,搜索“Treeview”,可以找到如下内容:

/************************************************************************
* *
* TreeView and TreeCell *
* *
***********************************************************************
*/
.tree-view
{
-fx-skin
: "com.sun.javafx.scene.control.skin.TreeViewSkin";
-fx-background-color
: -fx-box-border, -fx-control-inner-background;
-fx-background-insets
: 0, 1;

/* There is some oddness if padding is in em values rather than pixels,
in particular, the left border of the control doesn't show.
*/
-fx-padding
: 1; /* 0.083333em; */
}

其中跟节点图标有关的定义有:

.tree-cell.tree-disclosure-node.arrow {
-fx-background-color
: -fx-mark-color;
-fx-padding
: 0.333333em; /* 4 */
-fx-shape
: "M 0 -4 L 8 0 L 0 4 z";
}


.tree-cell:expanded.tree-disclosure-node.arrow
{
-fx-rotate
: 90;
}


.tree-cell:filled:hover .tree-disclosure-node .arrow
{
-fx-background-color
: -fx-mark-color;
}

.tree-cell:filled:selected .tree-disclosure-node .arrow
{
-fx-background-color
: -fx-selection-bar-text;
}

.tree-cell:filled:selected:hover .tree-disclosure-node .arrow
{
-fx-background-color
: -fx-selection-bar-text;
}

3. 简单介绍SVG路径字符串

先注意其中前两个高亮显示的定义。“-fx-shape”是一个SVG的路径字符串,用来画图形。M代表moveTo,L代表lineTo,最后的z表示连接当前点到初始点,使形状闭合。如图:

由此可知,在这里使用“-fx-shape”绘制了一个向右的箭头,是TreeItem的关闭状态。后面的“.tree-cell:expanded .tree-disclosure-node .arrow”理所当然就是展开状态,这倒是很简单,“-fx-rotate: 90;”表示顺时针旋转90度,即箭头冲下。

默认样式就是这个原理。把前面写的两个选择器放在项目的css文件中,就可以覆盖默认样式。其中的:

-fx-shape: "M 0 -1 L 3 -1 L 3 -4 L 5 -4 L 5 -1 L 8 -1 L 8 1 L 5 1 L 5 4 L 3 4 L 3 1 L 0 1 z";

就是手工画了一个“+”号,如图:

在SVG路径字符串中,还可以用“H x”或者“V y”代替“L x y”。“H x”表示从当前位置画水平直线到位置“x”,“V y”则表示从当前位置画垂直线到位置“y”。

这样之前的两个选择器可以写成下面的样子,看上去精简了很多:

.tree-cell .tree-disclosure-node .arrow {
-fx-shape
: "M 0 -1 H 3 V -4 H 5 V -1 H 8 V 1 H 5 V 4 H 3 V 1 H 0 z"
}

.tree-cell:expanded .tree-disclosure-node .arrow
{
-fx-rotate
: 0;
-fx-scale-shape
: false;
-fx-shape
: "M 0 -1 H 7 V 1 H 0 z";
}

4. CSS属性覆盖

注意,新的选择器仅仅覆盖了“-fx-shape”属性,其他两个属性,-fx-background-color和-fx-padding仍然原样保留。也是因此,在“.tree-cell:expanded”中一定要有 “-fx-rotate: 0;”,否则仍然会执行旋转90度,把画的“-”变成“|”。

还有,在“.tree-cell:expanded”中还多了属性“-fx-scale-shape: false”。该属性默认为“true”,会把画出的“-”号放大成一个矩形。

5. Win7 Style

上面提到5个关于节点图标的选择器中,其他3个描述的是鼠标经过,以及节点被选择时的样式。比如下面的定义实现了Win7效果的TreeView样式:

.tree-cell .tree-disclosure-node .arrow {
-fx-scale-shape
: false;

-fx-background-color
: transparent;
-fx-shape
: "M 0 4 L 0 -4 L 5 0 z";
-fx-border-color
: grey;
-fx-border-width
: 0.083333em;
}

.tree-cell:expanded .tree-disclosure-node .arrow
{
-fx-scale-shape
: false;

-fx-background-color
: -fx-mark-color;
-fx-rotate
: 0;
-fx-shape
: "M 0 3 L 6 -3 L 6 3 z";
-fx-border-width
: 0.083333em;
}

.tree-cell:filled:hover .tree-disclosure-node .arrow
{
-fx-background-color
: transparent;
-fx-border-color
: cyan;
}

.tree-cell:filled:selected .tree-disclosure-node .arrow
{
-fx-border-color
: cyan;
}
阅读更多内容

没有评论:

发表评论