??xml version="1.0" encoding="utf-8" standalone="yes"?>ASS亚洲熟妇毛茸茸PICS,亚洲精品理论电影在线观看,中文字幕亚洲不卡在线亚瑟http://m.tkk7.com/Swing/<font size="3"><br><font color="#669933"><em>天行? 君子以自Z?lt;/em></font><br><br></font> zh-cnFri, 09 May 2025 18:12:25 GMTFri, 09 May 2025 18:12:25 GMT60博客转移Q请讉K www.wiui.nethttp://m.tkk7.com/Swing/archive/2011/03/16/346374.htmlzhtzhtWed, 16 Mar 2011 04:08:00 GMThttp://m.tkk7.com/Swing/archive/2011/03/16/346374.html

zht 2011-03-16 12:08 发表评论
]]>
TWaver中文C֌8?h式开放_TWaver最好的技术社?/title><link>http://m.tkk7.com/Swing/archive/2010/08/03/327790.html</link><dc:creator>zht</dc:creator><author>zht</author><pubDate>Tue, 03 Aug 2010 01:57:00 GMT</pubDate><guid>http://m.tkk7.com/Swing/archive/2010/08/03/327790.html</guid><description><![CDATA[<span style="color: #008000">TWaver中文C֌ؓq大TWaver用户及UI开发爱好者提供一个专业的交流q_Qƈ为广大开发者提供丰富、高质量、原创的技术文章。在q里您可以看CU的UI技术文章;也可以交JAVA Swing/AWT/SWT/JavaFx、Flex、Silverlight/WPF、JavaScript/Ajax、SVG、GIS技术,查找或提出技术问题,共同交流分析相关UI技术,分n行业动态及׃n资料?br />    TWaver中文C֌包括技术文章区与中文论坛区两大部分。技术文章区时L新记录最有h值和技术含量的TWaver技术文章,在这里您可以一览无余TWaver技术精华;中文论坛包括了各产品分支的技术讨论,UI技术交以及行业动态,q里是您学习TWaver与分享学习经验得l佳q_?br /> 立刻点击q入TWaver中文C֌<br />  <br />    技术文章区Q?a >http://twaver.servasoft.com/</a><br />    中文论坛区:<a >http://twaver.servasoft.com/forum/ </a></span> <img src ="http://m.tkk7.com/Swing/aggbug/327790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/Swing/" target="_blank">zht</a> 2010-08-03 09:57 <a href="http://m.tkk7.com/Swing/archive/2010/08/03/327790.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>nativeFont和logicalFont在JDK1.4下的重大效率差异http://m.tkk7.com/Swing/archive/2010/08/02/327745.htmlzhtzhtMon, 02 Aug 2010 13:32:00 GMThttp://m.tkk7.com/Swing/archive/2010/08/02/327745.html

最q遇C个很奇怪的问题Q写了一个界面程序,刚开始没?讄字体Q效率还可以Q但是默认字体看着比较隄Q就改用了一个字体,谁知道在jdk1.4扚w试q程中,效率居然比原来要低非帔R常的多?br /> 后来发现如果是jdk1.5及以上版本两者效率几乎一P见附件截图?br /> 而且Swing效率和增强功能来ԌJDK1.6u10及以上版本有非常大的提高Q?br /> 所以如果条件运行,q是都改成JDK1.6u10及以上版?/font>

试代码如下:


public class FontDemo extends JPanel {

    
public static void main(String[] args) {
        JFrame f 
= new JFrame();
        f.setTitle(
"TWaver中文C֌");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setContentPane(
new FontDemo());
        f.setSize(
800600);
        f.setLocationRelativeTo(
null);
        f.setVisible(
true);
    }


    
private TDataBox box = new TDataBox();
    
private BarChart chart = new BarChart(box);

    
private static final int times = 1000;
    
private static final int style = Font.BOLD;
    
private static final int size = 16;

    
public FontDemo() {
        initBox();
        initChart();
        initGUI();
    }


    
private void initGUI() {
        
this.setLayout(new BorderLayout());

        JScrollPane pane 
= new JScrollPane(chart.getLegendPane());

        
this.add(chart, BorderLayout.CENTER);
        
this.add(pane, BorderLayout.EAST);
    }


    
private void initBox() {
        
final List localFonts = new ArrayList();
        List nativeFonts 
= new ArrayList();

        
// get all available fontFamily names
        Font[] fonts = SunGraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
        
for (int i = 0; i < fonts.length; i++{
            
// separate logical and native font
            if (SunGraphicsEnvironment.isLogicalFont(fonts[i])) {
                localFonts.add(fonts[i]);
            }

            
else {
                nativeFonts.add(fonts[i]);
            }

        }


        System.out.println(
"///////////// localFonts test /////////////");
        
for (int i = 0; i < localFonts.size(); i++{
            Font font 
= (Font) localFonts.get(i);
            
long start = System.currentTimeMillis();
            
for (int k = 0; k < times; k++{
                createFont(font);
            }

            
long spendTime = System.currentTimeMillis() - start;
            Node n 
= new Node();
            n.setName(font.getName());
            n.putChartValue(spendTime);
            n.putChartColor(Color.GREEN);
            box.addElement(n);
            
//            System.out.println(">" + spendTime + "\t" + font.getName());
        }

        System.out.println(
"\n///////////// nativeFonts test /////////////");
        
for (int i = 0; i < nativeFonts.size(); i++{
            Font font 
= (Font) nativeFonts.get(i);
            
long start = System.currentTimeMillis();
            
for (int k = 0; k < times; k++{
                createFont(font);
            }

            
long spendTime = System.currentTimeMillis() - start;
            Node n 
= new Node();
            n.setName(font.getName());
            n.putChartValue(spendTime);
            n.putChartColor(Color.RED);
            box.addElement(n);
            
//            System.out.println(">" + spendTime + "\t" + font.getName());
        }

        System.out.println(
"\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
    }


    
private void createFont(Font font) {
        
//     font.deriveFont(style, size);
        new Font(font.getName(), style, size);
    }


    
private void initChart() {
        chart.setLegendLayout(TWaverConst.LEGEND_LAYOUT_VERTICAL);
        chart.setLegendOrientation(TWaverConst.LABEL_ORIENTATION_HORIZONTAL);
        chart.setYScaleTextVisible(
true);
        chart.setShadowOffset(
1);
    }

}



1.4试l果


1.6试l果



原帖地址



zht 2010-08-02 21:32 发表评论
]]>
Ҏ成功U诀Q十大关键因素其与众不?/title><link>http://m.tkk7.com/Swing/archive/2010/06/28/324642.html</link><dc:creator>zht</dc:creator><author>zht</author><pubDate>Mon, 28 Jun 2010 02:31:00 GMT</pubDate><guid>http://m.tkk7.com/Swing/archive/2010/06/28/324642.html</guid><description><![CDATA[<p style="text-indent: 2em"><span style="color: #008000">2010q??6日下??0分,Ҏ公司成ؓ技术领域的最大公司,q且仅次于埃克森孚公司Q成为全第二大公司。在q去的数月间Q苹果公司的市g直咬紧微软公司?/span></p> <p style="text-indent: 2em"><span style="color: #008000">q去数年_Ҏ公司的发展历E恰D天火的发射q程———一pd快速紧密有序的爆炸而后直冲苍穹。苹果公司本w,它的领导者及它的产品已经变成了一U文化上的通用语。戴公司想成ؓ商业领域的苹果公司,Zipcar亦想在汽车共享领域成果公司,戏剧演员比尔·马赫甚至_如果Ҏ公司总裁做ȝQ政府将能提供更好的服务?/span></p> <p style="text-indent: 2em"><span style="color: #008000">一个公司或个h怎样才能成ؓ“某某领域的苹?#8221;Q在与苹果公司前雇员Q现d伙h以及其他一些长期关注苹果的专业人士q行探讨交流后,我们可以清晰地看到这个问题的{案Q它们围l以下十大关键因素展开?/span></p> <p style="text-indent: 2em"><strong><span style="color: #008000">1</span></strong></p> <p style="text-indent: 2em"><strong><span style="color: #008000">不落俗套</span></strong></p> <p style="text-indent: 2em"><span style="color: #008000">?1980q代领导Ҏ工作团队设计产品Ӟ?#8220;</span><a class="a-tips-Article-QQ" target="_blank"><span style="color: #008000">W记?/span></a><span style="color: #008000">看v来应该像什?#8221;q个问题上,斯蒂?#183;乔布斯经怺自指导工E师们?#8220;有一ơ他在百货商店看C个异常精的厨具”Q安q?#183;赫兹菲尔徯Q?#8220;然后他就要求设计师把W记本设计成他看到的那个模样”“q有一ơ他要设计师把品设计成保时L模样”。安q?#183; 赫兹菲尔hҎ创始工程师之一Qƈ著有《硅谷里的革命:Ҏ公司成长的伟大历双Ӏ一书?/span></p> <p style="text-indent: 2em"><span style="color: #008000">计算机看h更应该像跑R和厨P而苹果公司的q随者恰是高端h———那些已买或者是买保时L人。很明显Q仅通过跟随谷的市场动向,通过技术专家或是其它俗套的设计Q你很难吸引他们。而苹果的力Q恰恰在于自己钻研,从而不落俗套地吸引其目标客戗?/span></p> <p style="text-indent: 2em"><strong><span style="color: #008000">2</span></strong></p> <p style="text-indent: 2em"><strong><span style="color: #008000">逾越常规</span></strong></p> <p style="text-indent: 2em"><span style="color: #008000">技术专家普遍认为,源代码开放是大势所,且体现共享原则。在q一背景下,Ҏ被视为略昑ְ闭?/span></p> <p style="text-indent: 2em"><span style="color: #008000">但在Ҏ的哲学里Q封闭与自由q不冲突?#8220;我们正竭所能的让用户体验到预想效果Q?#8221;乔布斯在l莱?#183;塔特的电子邮件中写道。此前,莱恩在博客中抨击Ҏ止在iPhone和iPad上用Flash技术?#8220;你可以不赞同我们Q但我们的动机是U洁的?#8221;乔布斯写道,“止该技术是因ؓҎ商店提供了太多自由,你能买到盗取个h隐私的程序,也能买到摧毁甉|的程序,q能买色情媄片?#8221;</span></p> <p style="text-indent: 2em"><span style="color: #008000">管如此Q程序员们一直抱怨苹果商店过于封闭,他们认ؓҎ商店在设计应用程序上一直持独裁态度。即问题不在于它是封闭的Q而在于它在规则制定方面是独断专行的,隐蔽的,频繁变动的。如果苹果公司能攑֮透明度,p避免上述大部分争议?/span></p> <p style="text-indent: 2em"><span style="color: #008000">但根本上Q苹果不在乎争议。虽然批判仍在持l,但是Ҏ商店已经取得了巨大的成功Q就q其反对者也不得不承认它极其便捷且妙横生?/span></p> <p style="text-indent: 2em"><strong><span style="color: #008000">3</span></strong></p> <p style="text-indent: 2em"><strong><span style="color: #008000">拒绝复杂</span></strong></p> <p style="text-indent: 2em"><span style="color: #008000">“拒绝”可能是乔布斯在苹果公司所扮演的首要角艌Ӏ?#8220;他简直是个过滤器Q?#8221;Ҏ电脑工程师赫兹菲d说。每一天都会有设计者向乔布斯展C关于新产品和在现有产品上加入新特征的创意,而他的回{几乎都是拒l?#8220;我ؓ那些我们没有d的品感到骄Ԍ正如同我为那些我们做出来的品感到骄傲一栗?#8221;乔布斯在 2004q接受采访时说?/span></p> <p style="text-indent: 2em"><span style="color: #008000">乔布斯拒l的原因Q不仅出于对复杂设计的一贯反感,q有成本考虑Qƈ刉期待效应。对一些复杂的设计说不可以使成本降得更低,减少一些品的特征q能刉一U期待?#8220;故意忽略一h们想拥有的品特征,会激发h们对它的渴望?#8221;Ҏ公司的前工程师雷徯Q?#8220;当你在新版本中将q个功能加入Ӟ用户得偿所愿,则更加高兴?#8221;</span></p> <p style="text-indent: 2em"><span style="color: #008000">Ҏ公司一遍又一遍地q用着q个{略Q最新的例子是iPhone O S4Q它d了多d操作功能。事实上Q该功能用户们从2007qv开始要求。再来看看iPadQ真的没法添加摄像装|吗Q?/span></p> <p style="text-indent: 2em"><strong><span style="color: #008000">4</span></strong></p> <p style="text-indent: 2em"><strong><span style="color: #008000">服务客户</span></strong></p> <p style="text-indent: 2em"><span style="color: #008000">不管你的产品有多好,它L出问题的时候。近q来Q在W记本和手机领域Q苹果的竞争Ҏ们大多采取回避客戯非服务客户的策略。它们关掉了自n的客h务部门,q将q项业务外包l由低薪员工l成的电话服务中心。它们甚臌客户自己ȝ上寻扑ָ见问题的解答?/span></p> <p style="text-indent: 2em"><span style="color: #008000">而二十年前,Ҏ公司制订零售{略Ӟ明了一个压倒一切的优先目标Q即创立一U让客户完全联想不到计算机工业的零售商店。他们致力于在商店中营造一U类似四季酒店大堂的友好氛围?/span></p> <p style="text-indent: 2em"><span style="color: #008000">G eniusB ar 便是代表。G eniusBar里的工作人员会ؓ你诊断每一ƾ苹果公司的产品Q而不你从哪里买的。除非过了保质期Q公司对上述服务不收取Q何费用。苹果公ؓ何如此慷慨呢Q曾在G enius Bar工作q的德尔_“有时候客戯来时是ؓL帮助Q但在离开时却购买了新产品?#8221;</span></p> <p style="text-indent: 2em"><strong><span style="color: #008000">5</span></strong></p> <p style="text-indent: 2em"><strong><span style="color: #008000">忽略意见</span></strong></p> <p style="text-indent: 2em"><span style="color: #008000">乔布斯L在各U场合频J引用亨?#183;特的名aQ?#8220;如果我问客户他们需要什么,他们L说要‘一Ҏ快的马!’”</span></p> <p style="text-indent: 2em"><span style="color: #008000">乔布斯用q句话,来说明苹果公司所信奉的哲学,即h们预想不C们真正需要的东西。客户会告诉你一大堆他们所需要的东西Q但是当你按照他们的意图刉出来时Q这又不是他们想要的。将那些不存在的东西Ş象化Qƈ不是一件容易的事?/span></p> <p style="text-indent: 2em"><span style="color: #008000">不过乔布斯也不是客L反馈视ؓ无物。他其看做是鼓舞,而非方向Q是方式Q而非l果。所以苹果L能推出既能满_户需求同时又越客户惌的新产品?/span></p> <p style="text-indent: 2em"><strong><span style="color: #008000">6</span></strong></p> <p style="text-indent: 2em"><strong><span style="color: #008000">处处营销</span></strong></p> <p style="text-indent: 2em"><span style="color: #008000">如同G enius Bar已被证明是天才创意一P如今风行全球的苹果宣传口?#8220;换种方式思?#8221;也被证明不是IQ因果粉丝们的思考方式确实与众不同。粉丝对Ҏ的忠诚度堪比基督徒对耶稣的忠诚度。苹果的品牌是如此的强大和有吸引力,以至于对有些言Q苹果已l成了一U信仰?/span></p> <p style="text-indent: 2em"><span style="color: #008000">Ҏ公司通过一pd_入微的方式,来培ȝ丝对Ҏ品牌的宗教般的狂热。包括渲染品的秘{。而最重要的方式,是强化苹果品的象征意义Q最有效的市销{略则植根于产品本n。苹果公司用颜色、声韟뀁Ş状等元素的组合,构徏了清晰的品牌形象。苹果通过q些{略使其品牌形象深植人心?/span></p> <p style="text-indent: 2em"><span style="color: #008000">q一点在Ҏ发布C品时表现得尤为明显。通过一pdl一协调的步骤,Ҏ调动大众的胃口,吸引更多人关注。在公众的注意力高度集中ӞҎ再适时对外公布其早准备好的信息或C品。这一切都是围l着营销q行的?/span></p> <p style="text-indent: 2em"><strong><span style="color: #008000">7</span></strong></p> <p style="text-indent: 2em"><strong><span style="color: #008000">推陈出新</span></strong></p> <p style="text-indent: 2em"><span style="color: #008000">如果有天Ҏ推出了一ƾ没有桌面的电脑Q请不要感到惊讶?/span></p> <p style="text-indent: 2em"><span style="color: #008000">仅仅是惛_Q绝对不是,q些都将写进Ҏ的专利申h仉。虽然还没有看到q些产品Q但我们丝毫不应怀疑苹果的创新能力。事实上Q没有Q何一家公司像Ҏ那样频繁地对所在领域的基础环节q行反思和重构。仅仅在q去的短短几q间Q苹果公司就对其W记本电脑的生工艺q行了大q度革新Q这也是W记本生产设计领域有史以来所q行的最q捷最大规模的革新Q除Ҏ外,没有M其它公司做到q些?/span></p> <p style="text-indent: 2em"><span style="color: #008000">Ҏ完全无视IT领域所的兼Ҏ的概念Q这对诸如微软这L竞争者来说是亦是祸。在Ҏ公司的历史上Q它数次采用新的操作pȝ和新的芯片构造,q些军_L使它原来的生产组装基地立d得过时。苹果L不停地否定过去设计中的不合理及不之处,不断地推陈出斎ͼ使其产品总能以独特的风格傲立于时代前ѝ?/span></p> <p style="text-indent: 2em"><strong><span style="color: #008000">8</span></strong></p> <p style="text-indent: 2em"><strong><span style="color: #008000">适当“独裁”</span></strong></p> <p style="text-indent: 2em"><span style="color: #008000">2000q_作ؓҎ阿斯塔特国业务分部的运营经理,麦克·伊万杰李斯特负责D V Dd技术研发,卛_q种D V D装在高端电脑上,q且在未来将其{变ؓiD V D。该目界面呈现出来的,是多U多LH口和菜单选项Q以及大D늚功能解释文字?/span></p> <p style="text-indent: 2em"><span style="color: #008000">“q时乔布斯走了进来,”伊万杰李斯特回忆_“他没有仔l看我们的工作,而是在白板画了一个框?#8221;“q就是新设计?#8221;乔布斯说Q?#8220;只要一个窗口,音像资料推入窗口,然后点击一个叫播放的按钮,q是我们要的?#8221;</span></p> <p style="text-indent: 2em"><span style="color: #008000">“所有h呆若木鸡Q?#8221;伊万杰李斯特_q种风格与他以前所p的公司E异。技术领域追求具有包Ҏ的、彻底的、集合大众智慧的创新。而苹果的工程师则要花?100%的时间去设计׃部分资q理或是乔布斯一个h计划的品。有权做出决{的人是如此之少Q以至于Ҏ一q仅能够推出一Ҏ两项创新产品?/span></p> <p style="text-indent: 2em"><strong><span style="color: #008000">9</span></strong></p> <p style="text-indent: 2em"><strong><span style="color: #008000">重新发明</span></strong></p> <p style="text-indent: 2em"><span style="color: #008000">“革命?#8221;是乔布斯最喜欢的词之一。他极力夸赞Ҏ的每个发明创造都是独一无二的和有创造性的?/span></p> <p style="text-indent: 2em"><span style="color: #008000">Ҏ的品到底具不具有革命性,取决于我们对革命性这个词的定义。苹果公司擅于搜集汇L术领域的最新创意,q过转化其变ؓ己有。苹果擅长发现别的同cM品上存在的问题和不Qƈ在其推出的品上上q问题和不予以解决Q或者是对货架上的其它同cM品在Ҏ的模式下q行改良革新?/span></p> <p style="text-indent: 2em"><span style="color: #008000">iPad 是一个典型例子。早?001q?/span><a class="a-tips-Article-QQ" target="_blank"><span style="color: #008000">比尔·盖茨</span></a><span style="color: #008000">推Z一Ƒօ备几乎相同功能的建立在w indow s操作pȝ基础上的产品Q但是当时在交互界面Q应用Y件开发方面存在诸多需要解决的问题Q微软公司就没有l箋坚持下去。乔布斯发现在苹果公司现有的技术基上,上述的问题都不成其ؓ问题Q于是iPad横空Z。在刚推出的两个月里QiPad卖Z200万台?/span></p> <p style="text-indent: 2em"><strong><span style="color: #008000">10</span></strong></p> <p style="text-indent: 2em"><strong><span style="color: #008000">有条不紊</span></strong></p> <p style="text-indent: 2em"><span style="color: #008000">?iPad上市几周后,惠普、微软及其它一些公司相l推q了同类产品的上市。它们正试图制作出比iPad更加_֯、功能更加齐全的产品。它们正致力于创造自q本的‘快马’Q于是它们推q面市,又回C设计室。与此同ӞҎ的其它竞争者如GoogleQIntel{也快马加鞭地在该领域排兵布c?/span></p> <p style="text-indent: 2em"><span style="color: #008000">Ҏ公司q没有ؓq种竞争态势所牵制Q它严格地按照自q旉表行事。苹果公司的旉表是严格按照其自w的l营{略和长期愿景目标来制定的,其受市场态势和竞争者状늚影响较ؓdQ这栯果公司总能掌握d权,适时地推Z些新产品Q占市场先机?/span></p> <img src ="http://m.tkk7.com/Swing/aggbug/324642.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/Swing/" target="_blank">zht</a> 2010-06-28 10:31 <a href="http://m.tkk7.com/Swing/archive/2010/06/28/324642.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自定义JFrame/JDialog标题?/title><link>http://m.tkk7.com/Swing/archive/2010/06/25/324512.html</link><dc:creator>zht</dc:creator><author>zht</author><pubDate>Fri, 25 Jun 2010 13:52:00 GMT</pubDate><guid>http://m.tkk7.com/Swing/archive/2010/06/25/324512.html</guid><description><![CDATA[     摘要: 替换/自定?JFrame/JDialog标题?<br>setUndecorated后,调整JFrame/JDialog大小 <br>自定义JFrame/JDialog 最大化/最化/关闭按钮 <br>  <a href='http://m.tkk7.com/Swing/archive/2010/06/25/324512.html'>阅读全文</a><img src ="http://m.tkk7.com/Swing/aggbug/324512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/Swing/" target="_blank">zht</a> 2010-06-25 21:52 <a href="http://m.tkk7.com/Swing/archive/2010/06/25/324512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing _自定义颜色选择?amp;颜色选择下拉?/title><link>http://m.tkk7.com/Swing/archive/2010/04/29/319736.html</link><dc:creator>zht</dc:creator><author>zht</author><pubDate>Thu, 29 Apr 2010 14:10:00 GMT</pubDate><guid>http://m.tkk7.com/Swing/archive/2010/04/29/319736.html</guid><description><![CDATA[     摘要: Swing_自定义ColorChooser&ColorComboBox <br>  <a href='http://m.tkk7.com/Swing/archive/2010/04/29/319736.html'>阅读全文</a><img src ="http://m.tkk7.com/Swing/aggbug/319736.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/Swing/" target="_blank">zht</a> 2010-04-29 22:10 <a href="http://m.tkk7.com/Swing/archive/2010/04/29/319736.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修改JTable默认Copy实现http://m.tkk7.com/Swing/archive/2010/03/05/314579.htmlzhtzhtFri, 05 Mar 2010 03:34:00 GMThttp://m.tkk7.com/Swing/archive/2010/03/05/314579.html    最q有人问Q如何在table中Ctrl+C赋值的时候,定制选中的内宏V默认情况下是返回value|但是很多情况下,我们都会定制一些显C,举个例子Q取出来的原始位|数据是0Q重载renderer以后可能变成了"?,当我们copy的时候,而我们取到的g然是0Q而对于客戯言Q可能取??可能更有意义Q这个时候就需要做一些处理了Q如下所C?

table.getActionMap().put("copy"new AbstractAction() {
            
public void
 actionPerformed(ActionEvent e) {
//至于此处如何处理Q就看具体的逻辑?/span>
                box.getLastSelectedElement();
                
int column =
 table.getSelectedColumn();
                
int row =
 table.getSelectedRow();
                
if (column != -1 && row != -1
) {
                    Object value 
=
 table.getValueAt(row, column);
                    StringSelection stringSelection 
= new
 StringSelection(value.toString()+"hello");
                    Clipboard clipboard 
=
 Toolkit.getDefaultToolkit().getSystemClipboard();
                    clipboard.setContents(stringSelection, 
null
);
                }
            }
        });

 



zht 2010-03-05 11:34 发表评论
]]>
Swing DayDayUp之六: QQ风格JTextFieldhttp://m.tkk7.com/Swing/archive/2010/02/09/312402.htmlzhtzhtTue, 09 Feb 2010 04:06:00 GMThttp://m.tkk7.com/Swing/archive/2010/02/09/312402.html阅读全文

zht 2010-02-09 12:06 发表评论
]]>
JavaGUI应用E序部vhttp://m.tkk7.com/Swing/archive/2010/02/05/312114.htmlzhtzhtFri, 05 Feb 2010 07:16:00 GMThttp://m.tkk7.com/Swing/archive/2010/02/05/312114.html 

JavaGUI应用E序部v


JavaGUIE序发布分类

 1)  AppletQ可以嵌入到览器中Q通过|页的方式展C给用户

 2)  application Q有两种发布方式

  ü 打包成jar包通过bat的方式运行,或者通过W三方Y件打成exe(后箋会再详细介绍)

  ü 通过Java Web Start的方式发布到服务器端Q通过JNLPq行

 相对来说W二U方式可能更好一些,免除了更新的ȝ?/span>

 用applet或者jws的方式发布,大部分都需要数字签名?br />



Z么要{֐

 其实{֐不是必须的,如果你的E序只是单纯的绘图,昄Q只要不讉K|络资源也不讉K本地文gQ是不用{֐的,
 但是如果要访问本地或|上资源必ȝ名,
 比如d本地文g或者访问数据库Q这是由java的沙机制决定的Q即jvm内部有一l安全检查规则,要通过查之后才能访问特定资源?/span>

 如果要突破这个规则,可以有两个方?

 1) 修改jre权限文g如下

  java.policy为grant {
   permission java.security.AllPermission;
        };

  一般权限文件的目录如下C:"Program Files"Java"jre6"lib"security

  但是修改每个客户端的权限文gQ无Z旉q是操作上都是很ȝ的?/span>

 2)  {֐Q意思就是告诉用Pq个E序是谁发布的,是不是能信QQ如果客L定,okQ这个applet或者jws可以访问外部资源了?br />


如何{֐

 1)首先保你已l完全安装了Java2的环境,有keytool工具Q它位于JDK的bin目录下。这一般不会有问题?/span>

 2)到Dos状态下Q进入你需发布应用E序的jar包所在的目录Q运行下面这句话
   keytool -genkey -keystore myKeystore -alias jwstest -validity 1000
      它将会提CZ输入用户名、密码等Q按照提C随便输入即可,不输入直接回车即可,
   但一定要C密码。运行结束它会在当前\径下创徏名ؓmyKeystore的文件?/span>

 3)如果你想查看一下刚才生成的myKeystore文g的内容,可以使用下面q句话:
  keytool -list -keystore myKeystore
  昄出来应该cM如下Q?br />   Keystore type: jks
  Keystore provider: SUN
  Your keystore contains 1 entry:
  jwstest, Tue Nov 23 19:29:32 PST 2001, keyEntry,
  Certificate fingerprint (Test):
  C3:A9:CD:F3:D3:AC:4D:3F:3C:5B:AF:9E:CF:0D:46:5C

 4)对你需发布应用E序的jar包进行签名,q行下面q句话:
  jarsigner -keystore myKeystore yourtest.jar jwstest
  其中yourtest.jar是你的jar包名Q你需要修改它Q别的就不必修改了?br />   q行时会提示你输入密码,是你刚才在生成myKeystore文g时设定的密码?br />



如果有很多jar包怎么?/span>

 在开发的q程中很可能会引用到W三方的jar包,而第三方的jar包又可能引用到其它的Q所以可能有很多的jar包,需要和applet一起发布,有两个方?br />   1) 分别打包{֐Q用于包比较少Q比如只??个的情况
        2) ?把applet的jar包签名,让用L认访问授权,applet已经被用h权,那么可以在applet里改变安全管理器QSecurityManagerQ?br />    只需要承SecurityManagerc,创徏自己的安全管理器c,然后覆盖checkPermissionҎQ允许访问Q何资源?br />    在applet的initҎ中调用System.setSecurityManager把安全管理器讄为我们自定义的即可?/span>


 class CustomManager extends SecurityManager {
  public void checkPermission(Permission perm, Object context) {
  }
  public void checkPermission(Permission perm) {
  }
 }
 

其它一些相兌料如?/span>

 JDK中keytool常用命o

 -genkey      在用户主目录中创Z个默认文?.keystore",q会产生一个mykey的别名,mykey中包含用L公钥、私钥和证书
 -alias       产生别名
 -keystore    指定密钥库的名称(产生的各cM息将不在.keystore文g?br />  -keyalg      指定密钥的算?nbsp;  
 -validity    指定创徏的证书有效期多少?br />  -keysize     指定密钥长度
 -storepass   指定密钥库的密码
 -keypass     指定别名条目的密?br />  -dname       指定证书拥有者信?例如Q?nbsp; "CN=sagely,OU=atr,O=szu,L=sz,ST=gd,C=cn"
 -list        昄密钥库中的证书信?nbsp;     keytool -list -v -keystore sage -storepass ....
 -v           昄密钥库中的证书详l信?br />  -export      别名指定的证书导出到文?nbsp; keytool -export -alias caroot -file caroot.crt
 -file        参数指定导出到文件的文g?br />  -delete      删除密钥库中某条?nbsp;         keytool -delete -alias sage -keystore sage
 -keypasswd   修改密钥库中指定条目口o    keytool -keypasswd -alias sage -keypass .... -new .... -storepass ... -keystore sage
 -import      已{֐数字证书导入密钥?nbsp; keytool -import -alias sage -keystore sagely -file sagely.crt
     导入已签名数字证书用keytool -list -v 以后可以明显发现多了认证N度,q且把整个CA铑օ部打印出来?/span>

 Keytool 是安全钥匙与证书的管理工?它管理一个存储了U有钥匙和验证相应公共钥匙的与它们相兌的X.509 证书铄keystore(相当一个数据库).

 Keytool 是一个有效的安全钥匙和证书的理工具. 它能够用户使用数字{֐来管理他们自qU有/公共钥匙?理用来作自我鉴定的相关的证?理数据完整性和鉴定服务.它还能用户在通信时缓存它们的公共钥匙.

 一个证书是某一实体(个h,公司{?的数字签?指出其他实体的公共钥?或其他信?的详l的?当数据被{֐?q个{֐信息被用来检验数据的完整性和真实?完整性指数据没有被修改和改,真实性指数据从Q何生和{֐的一方真正的传输到达.

 Keytool 把钥匙和证书储存C个keystore.默Q的实现keystore的是一个文?它用一个密码保护钥?

 而另外的一个工具jarsigner用keystore中的信息产生或检验Java aRchive(jar文g)中的数字{֐.

 Keystore有两个不同的入口:

 1.钥匙入口:保存了非常敏感的加密的钥匙信?q且是用一个保护的格式存储以防止未被授权的讉K.以这UŞ式存储的钥匙是秘密钥?或是一个对应证书链中公有钥匙的U有钥匙.

 2.信Q证书入口:包含一个属于其他部分的单一公共钥匙证书.它之所以被UCؓ"信Q证书",是因为keystore信Q的证书中的公共钥匙真正属于证书所有者的w䆾识别.

 Keystore的别?

 所有的keystore入口(钥匙和信任证书入?是通过唯一的别名访?别名?不区分大写?如别名Hugo和hugo指向同一个keystore入口.

 可以在加一个入口到keystore的时候?genkey参数来生一个钥匙对(公共钥匙和私有钥?时指定别?也可以用-import参数加一个证书或证书铑ֈ信Q证书.

 ?

 keytool -genkey -alias duke -keypass dukekeypasswd

 其中duke为别?dukekeypasswd为duke别名的密?q行命o的作用是产生一个新的公?U有钥匙?

 假如你想修改密码,可以?

 keytool -keypasswd -alias duke -keypass dukekeypasswd -new newpass

 旧密码dukekeypasswd改ؓnewpass.

 Keystore的?

 1.当?genkey ?import?identitydb命od数据C个keystore,而当q个keystore不存在时,产生一个keystore.默认名是.keystore,存放到user-home目录.

 2.当用-keystore指定?生指定的keystore.

 Keystore的实?

 Keytool cM于java.security包下,提供一个非常好的接口去取得和修改一个keystore中的信息. 目前有两个命令行:keytool和jarsinger,一个GUI工具Policy 可以实现keystore.׃keystore是公开?用户可以用它写一些额外的安全应用E序.

 Keystoreq有一个sun公司提供的內在实?它把keystore作ؓ一个文件来实现.利用了一个keystorecd(格式)"JKS".它用单独的密码保护每一个私有钥?也用可能不同的密码保护整个keystore的完整?

 支持的算法和钥匙大小:

 keytool允许用户指定钥匙对和注册密码服务供应者所提供的签名算?~省的钥匙对产生法?DSA".假如U有钥匙?DSA"cd,~省{֐法?SHA1withDSA",假如U有钥匙?RSA"cd,~省法?MD5withRSA".

 当生一个DSA钥匙?钥匙必须?12-1024位之?对Q何算法的~省钥匙大小?024?

 证书:

 一个证书是一个实体的数字{֐,指出其他实体的公共钥匙有明确的?

 1.公共钥匙 :是同一个详l的实体的数字关?q有意让所有想同这个实体发生信dpȝ其他实体知道.公共钥匙用来验签?

 2.数字{֐:假如数据已被{֐,q用w䆾存储在一个实体中,一个签名能够证明这个实体知道这个数?q个数据用实体私有钥匙签名ƈ递交;

 3.w䆾:知道实体的方?在一些系l中w䆾是公共钥?其他pȝ中可以是从一个X.509名字的邮件地址的Unix UID来的M东西;

 4.{֐:一个签名用用实体私有钥匙来计算某些加密数据;

 5.U有钥匙:是一些数?每一个私有钥匙只能被特定的拥有该U有钥匙的实体知?U有和公共钥匙存在所有用公共钥匙加密的系l的钥匙对中.一个公共钥匙加?如DSA),一个私有钥匙与一个正的公共钥匙通信.U有钥匙用来计算{֐.

 6.实体:一个实体可以是一个h,一个组l?一个程?一台计机,一个商?一个银?或其他你想信ȝ东西.

 Keytool应用实例:

 1.产生一个keystore:

 keytool -genkey -alias User(keystore的别? -keyalg RSA -validity 7 -keystore keystore(指定keystore).

 q行q个命o,pȝ提示:

 Enter keystore password:yourpassword(输入密码)

 What is your first and last name?

 [Unknown]: your name(输入你的名字)

 What is the name of your organizational unit?

 [Unknown]:your organizational(输入你所在组l单位的名字)

 What is the name of your organization?

 [Unknown]:your organization name (输入你所在组l的名字)

 What is the name of your City or Locality?

 [Unknown]:your city name(输入所在城市的名字)

 What is the name of your State or Province?

 [Unknown]:your provice name(输入所在省份名?

 What is the two-letter country code for this unit?

 [Unknown]:cn(输入国家名字)

 Is CN=your name, OU=your organizaion, O="your organization name",

 L=your city name, ST=your province name, C=cn correct?

 [no]: yes

 2.查一个keystore:

 keytool -list -v -keystore keystore

 Enter keystore password:your password(输入密码)

 显Ckeystore內容?

 Keystore type: jks

 Keystore provider: SUN

 Your keystore contains 1 entry

 Alias name: yourname

 Creation date: Dec 20, 2001

 Entry type: keyEntry

 Certificate chain length: 1

 Certificate[1]:

 Owner: CN=yourname, OU=your organization, O="your organization name",

 L=your city name, ST=your province name, C=CN

 Issuer: CN=Duke, OU=Java Software, O="Sun Microsystems, Inc.", L=Palo Alto, ST=CA, C=US

 Serial number: 3c22adc1

 Valid from: Thu Dec 20 19:34:25 PST 2001 until: Thu Dec 27 19:34:25 PST 2001

 Certificate fingerprints:

 MD5: F1:5B:9B:A1:F7:16:CF:25:CF:F4:FF:35:3F:4C:9C:F0

 SHA1: B2:00:50:DD:B6:CC:35:66:21:45:0F:96:AA:AF:6A:3D:E4:03:7C:74

 3.输出keystoreC个文?testkey:

 keytool -export -alias duke -keystore keystore -rfc -file testkey

 pȝ输出:

 Enter keystore password:your password(输入密码)

 Certificate stored in file < td>

 4.输入证书C个新的truststore:

 keytool -import -alias dukecert -file testkey -keystore truststore

 Enter keystore password:your new password.(输入truststore新密?

 5.查truststore:

 keytool -list -v -keystore truststore

 pȝ显Ctruststore的信?

 现在可以用适当的keystoreq行你的应用E序.?

 java -Djavax.net.ssl.keyStore=keystore -Djavax.net.ssl.keyStorePassword=password Server

 ? java -Djavax.net.ssl.trustStore=truststore

 -Djavax.net.ssl.trustStorePassword=trustword Client


 by

   张涛
    zht_dream@hotmail.com

 



zht 2010-02-05 15:16 发表评论
]]>
监听JComponent昄事ghttp://m.tkk7.com/Swing/archive/2010/02/04/312027.htmlzhtzhtThu, 04 Feb 2010 14:09:00 GMThttp://m.tkk7.com/Swing/archive/2010/02/04/312027.html

    很多时候,我们需要在界面初始化以后对E序q行某些讄QD个例子,当界面呈现出来以后,讄?/span>SplitPane的的癑ֈ?/span>(关于q个Z么必这么处理请参?/span>java源代?/span>)。很Ҏ我们想到给E序dComponentListener监听Q然后在监听中作处理Q如下所C?/span>

panel.addComponentListener(new ComponentAdapter() {

                     public void componentShown(ComponentEvent e) {

                            System.out.println("panel:shown");

                     }

              });

但是q没有和我们惌的那P当组件在界面上显C出来的时?/span>fire?/span>componentShowncd的事件的Q下面我们通过研究源代码分析下原因

首先的问题是在什么地方会fire?/span>ComponentEvent

通过查看源代码,我们可以看到实在Component?/span>show()Ҏ?/span>

ComponentEvent e = new ComponentEvent(this,ComponentEvent.COMPONENT_SHOWN);

Toolkit.getEventQueue().postEvent(e);

具体代码Q请参?/span>java源程?/span>

也就是说只有在组件调用到setVisible(true)的时候才?/span>fire?/span>ComponentEvent

但是你会发现Q即便是我们调用JComponent?/span>setVisible(true)Q也不会监听?/span>shown事g

原因主要?/span>JComponent重蝲?/span>setVisibleҎ

如下

public void setVisible(boolean aFlag) {

        if(aFlag != isVisible()) {

            super.setVisible(aFlag);

            Container parent = getParent();

            if(parent != null) {

                Rectangle r = getBounds();

                parent.repaint(r.x,r.y,r.width,r.height);

            }

           // Some (all should) LayoutManagers do not consider components

           // that are not visible. As such we need to revalidate when the

           // visible bit changes.

           revalidate();

        }

}

因ؓJComponent?/span>visible属性默认就?/span>trueQ所以不会调用到Component?/span>setVisibleҎQ所以也不会fire?/span>ComponentEventQ当Ӟ如果你调用下JComponent?/span>setVisible(false)+setVisible(true)是会fire?/span>ComponentEvent.COMPONENT_SHOWN事g的,Q但是在里面很可能得不到当前lg的大信息或者不?/span>SplitPane讄分割比例Q因个时候界面还没有初始化)Q而且如果?/span>JFrameQ?/span>JDialogQ?/span>JApplet{也是没问题的,因ؓ他们调用的都?/span>Component?/span>setVisibleҎ(所以给q些层lgdComponentListener是没有问题的Q都会监听到)

如果不想使用上述ҎQ还有另外一U方式就是添?/span>HierarchyListener监听Q因为当层lg(JFrame,JDialog{?/span>)setVisible(true)界面昄的时候,里面都会fire?/span>HierarchyEventQ具体代码如?/span>(详细代码请参?/span>Component?/span>show()Ҏ)

       createHierarchyEvents(HierarchyEvent.HIERARCHY_CHANGED,

                                     this, parent,

                                     HierarchyEvent.SHOWING_CHANGED,

                                          Toolkit.enabledOnToolkit(AWTEvent.HIERARCHY_EVENT_MASK));

?/span>createHierarchyEventsҎ会在每个lg?/span>fire?/span>HierarchyEventQ至于具体细节,有时间的可以dubug下,具体的解x法如?/span>

       panel.addHierarchyListener(new HierarchyListener() {

                     public void hierarchyChanged(HierarchyEvent e) {

                            if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0) {

                                   if (e.getComponent().isShowing()) {

                                          System.out.println(panel.getBounds());

                                          System.out.println("panel:hshow");

                                   }

                                   else {

                                          System.out.println("panel:hhide");

                                   }

                            }

                     }

              });

试代码如下
public class Test {
    
public static void main(String[] args) {
        
new Test();
    }


    
public Test() {
        
final JPanel panel = new JPanel();
        panel.addComponentListener(
new ComponentAdapter() {
            
public void componentShown(ComponentEvent e) {
                System.out.println(panel.getBounds());
                System.out.println(
"panel:shown");
            }

        }
);
        
//        panel.setVisible(false);
        
//        panel.setVisible(true);
        panel.addHierarchyListener(new HierarchyListener() {
            
public void hierarchyChanged(HierarchyEvent e) {
                
if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0{
                    
if (e.getComponent().isShowing()) {
                        System.out.println(panel.getBounds());
                        System.out.println(
"panel:hshow");
                    }

                    
else {
                        System.out.println(
"panel:hhide");
                    }

                }

            }

        }
);

        JFrame frame 
= new JFrame();

        frame.addComponentListener(
new ComponentAdapter() {
            
public void componentShown(ComponentEvent e) {
                System.out.println(
"frame:shown");
            }

        }
);

        frame.setContentPane(panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(
500400);
        frame.setVisible(
true);
    }

}



zht 2010-02-04 22:09 发表评论
]]>
վ֩ģ壺 ޾Ʒþþwww| AVվ| ޳aƬӰԺ| ƷƬva| av벻߹ۿ| ˳77777վ | ͵ԾƷʮ| һëƬ߲Ƶ| þAV鶹| Ʒ߹ۿ| ޾Ʒ΢ľƷ| ĻѲ| պŷAVҹҹ| aƬѹۿ| þþþþAVר| ҹɫһѲƵ | ҹþþþüŮӰԺ| һëƬëƬëƬ| JLZZJLZZ| aëƬƵ| þ޾Ʒվ| 91Ƶ| 1134Ʒâ | ޳a߹ۿ| ³˿Ƭһ߹ۿ| һƵѹۿ| ޳AVƬ| Ů18ëƬaëƬƵ| ޸߾Ʒ| ޾Ʒþþþsm| ĻȫĻ| ޾ƷŮͬĻ| Ƭһһ߹ۿ| 99ƵѲ| þҹ޾Ʒ| һĻ| ձվ| ȫ߲ëƬ| tsվ| ۺ˾þôý| ߳Ƶ|