189 8069 5689

Java人左右走代码 java按钮左右移动的代码

急!求教Java高手!以下是我的Java代码,我在注释中写明了我的想法,和问题,请高手指点!谢谢!

/*我想实现的功能例如将原本D:\test中所有文件,

在尼木等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计制作、网站建设 网站设计制作按需定制制作,公司网站建设,企业网站建设,高端网站设计,成都全网营销,外贸网站建设,尼木网站建设费用合理。

* 统一命名成类似图片1.jpg,图片2.jpg。。

* 让用户输入想要自动命名的文件夹路径和文件统一命的名称(如图片),

* 然后再让用户输入想要自动命名的文件类型(jgp等)*/

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

class jfr extends JFrame {

String getpath;

String gettype;

String getname;

JTextField jf1 = new JTextField();// 接收用户输入的文件夹路径

JTextField jf2 = new JTextField();// 接收用户输入的文件夹下的文件类型

JTextField jf3 = new JTextField();// 接收用户输入的文件夹下的文件统一的名称

ImageIcon bu = new ImageIcon("button.gif");// 这个图片我放在了目录下,由于是提问我发送不成图片

JButton sure, cancel;

public jfr() {

Container cp;

cp = getContentPane();

setSize(400, 400);

setLocation(640, 400);

setTitle("文件自动批量命名工具");

setBackground(Color.blue);

setLayout(new GridLayout(4, 2));

setVisible(true);

cp.add(new JLabel("请输入您要批量命名的文件\n所在文件夹路径"));

cp.add(jf1);

cp.add(new JLabel("请输入您要批量命名的文件\n的文件类型,如\"txt\",\"doc\"等"));

cp.add(jf2);

cp.add(new JLabel("请输入您要批量处理的文件\n前缀名:"));

cp.add(jf3);

sure = new JButton("确定", bu);

cancel = new JButton("取消", bu);

cp.add(sure);

cp.add(cancel);

jf1.addActionListener(new actionlisten1());

jf2.addActionListener(new actionlisten1());

sure.setActionCommand("正在批量命名中,请稍后!");

sure.addActionListener(new bu1());

cancel.addActionListener(new bu2());

addWindowListener(new windowlisten());

}// 以下用来实现监听三个文本框的输入,由于字数限制,只写一个

class actionlisten1 implements ActionListener {

public void actionPerformed(ActionEvent e) {

getpath = jf1.getText();

}

}// 监听按钮确定

class bu1 implements ActionListener {

public void actionPerformed(ActionEvent e) {

System.out.println(sure.getActionCommand());

exchange ex = new exchange(gettype, gettype, getname);

boolean an = ex.exchangefiles();

if (an)

System.out.println("文件批量命名完毕,请查阅!");

}// 监听取消按钮

}

class bu2 implements ActionListener {

public void actionPerformed(ActionEvent e) {

System.out.println("已经取消");

}

}

class windowlisten extends WindowAdapter {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

}// 这个类我没有定义成类中类,用来实现文件的重命名

class exchange {

String getpath;

String gettype;

String getname;

public exchange(String getp, String gett, String getn) {

getpath = getp;

gettype = gett;

getname = getn;

}// 这个方法用来实现改变文件的名称

public boolean exchangefiles() {

getpath = exchangestring(getpath);

File f1 = new File(getpath);

String files[] = f1.list();

for (int i = 0; i = files.length; i++) {

File f2 = new File(getpath + files[i]);

File f3 = new File(getpath + "\\" + getname + i + "." + gettype);

f3.renameTo(f2);

}

return true;

}// 此方法用来转换用户输入的文件夹路径中'\',将其转换为'\\'

public String exchangestring(String s) {

for (int i = 0; i s.length(); i++) {

if (s.charAt(i) == '\\') {

// 目前我遇到的问题就是这样,无法将路径中的'\'换成'\\'

s = s.substring(0, i) + "\\\\" + s.substring(i);

System.out.println("test!");

}

}

return s;

}

}

}

public class test {

public static void main(String[] args) {

jfr jf = new jfr();

}

}

//自己好好看看。这东西错误好多阿。

//什么错误都有。我就给你改了。另外test是另一个 .java文件中写的。自己看看

//还有就是我只是把你的程序改的不报错误了!

java新手向大虾请教啊!代码

没有看到你要请教什么?

大概看了下,似乎也没有什么问题!

只是这里我感觉是不是有点问题呢?

Properties props=new Properties();

File file=new File("users.xml");

if(!file.exists()){//文件不存在,是首次登录

props.setProperty("username",username);

这一行 File file=new File("users.xml");创建的文件是物理文件的话应该指定物理路径啊!你后来的方法才能找到文件进行比较!

只是个人意见仅供参考!

求 大神帮忙详细解释下一下 java代码 谢谢

是这么一个结构,有抽象类雇员Employee,包含抽象方法薪资earnings,他有三个实现类,分别是YearWorker,MonthWorker,WeekWorker,然后还有一个公司类Company,包含计算所有雇员薪资的方法salariesPay

然后在你的入口类HardWork中,创建了20个长度的数组,其中,如果编号除3余数为0,实例化为WeekWorker对象,余数为1实例化为MonthWorker对象,余数为2实例化为YearWorker对象,

然后将数组传递给公司类,计算所有雇员需要的工资

帮忙写下代码java swing,个人信息实例

本人急忙做的:有什么不合要求的请再告诉我:

package show;

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class Test extends JFrame implements ActionListener

{

GridBagLayout g=new GridBagLayout();

GridBagConstraints c=new GridBagConstraints();

Test(String str)

{

super(str);

setSize(300,500);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLayout(g);

//调用方法

addComponent();

submit.addActionListener(this);

setVisible(true);

setLocationRelativeTo(null);//设居中显示;

}

//在这个方法中将会添加所有的组件;

//使用的网格包布局;希望楼主能看懂;

public void addComponent()

{

//个人信息登记

noteInformation=new JLabel("个人信息登记:");

add(g,c,noteInformation,0,0,1,1);

//用户名

userName=new JLabel("用户名:");

add(g,c,userName,0,1,1,1);

//用户名输入框

textUserName=new JTextField(10);

add(g,c,textUserName,1,1,2,1);

//密码:

password=new JLabel("密码:");

add(g,c,password,0,2,1,1);

//密码输入框

textUserPassword=new JTextField(10);

add(g,c,textUserPassword,1,2,2,1);

//性别

sex=new JLabel("性别:");

add(g,c,sex,0,3,1,1);

//男 女单选框

sexMan=new JRadioButton("男");

add(g,c,sexMan,1,3,1,1);

sexGirl=new JRadioButton("女");

add(g,c,sexGirl,2,3,1,1);

ButtonGroup group=new ButtonGroup();

group.add(sexMan);

group.add(sexGirl);

//出生日期

birthday=new JLabel("出生日期:");

add(g,c,birthday,0,4,1,1);

//复选框及其内容

String[] YEARS=new String[65];

for(int i=1950,k=0;i=2014;i++,k++)

{

YEARS[k]=i+"年";

}

year=new JComboBox(YEARS);

add(g,c,year,1,4,1,1);

//复选框及内容

month=new JComboBox(MONTH);

add(g,c,month,2,4,1,1);

//submit按钮

submit=new JButton("submit");

c.insets=new Insets(7,0,4,0);

add(g,c,submit,1,5,1,1);

result=new JTextArea(15,20);

add(g,c,result,0,6,3,4);

}

/* public void ActionPerformed(ActionEvent e)

{

String s=textUserName.getText();

String t=textUserPassword.getText();

String k=sexMan.getText();

String v=sexGirl.getText();

String a=(String) year.getSelectedItem();

String b=(String)month.getSelectedItem();

String num="用户名:"+s+"\n"+"密码: "+t+"性别: "+(k==null?v:k)+"\n"+"出生日期:"+a+" "+b;

result.append(num);

}*/

public void add(GridBagLayout g,GridBagConstraints c,JComponent jc,int x ,int y,int gw,int gh)

{

c.gridx=x;

c.gridy=y;

c.anchor=GridBagConstraints.WEST;

c.gridwidth=gw;

c.gridheight=gh;

g.setConstraints(jc,c);

add(jc);

}

public static void main(String args[])

{

new Test("个人信息登记表");

}

JLabel noteInformation,userName,password;

JLabel sex,birthday;

JTextField textUserName,textUserPassword;

JRadioButton sexMan,sexGirl;

JComboBox year,month;

JButton submit;

JTextArea result;

final String[] MONTH={"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"};

@Override

public void actionPerformed(ActionEvent arg0)

{

String s=textUserName.getText();

String t=textUserPassword.getText();

String k=sexMan.getText();

String v=sexGirl.getText();

String a=(String) year.getSelectedItem();

String b=(String)month.getSelectedItem();

String num="用户名:"+s+"\n"+"密码: "+t+"\n 性别: "+(k==null?v:k)+"\n"+"出生日期:"+a+" "+b;

result.setText(num);

}

}

如何写出更好的Java代码

1. 优雅需要付出代价。

从短期利益来看,对某个问题提出优雅的解决方法,似乎可能花你更多的时间。但当它终于能够正确执行并可轻易套用于新案例中,不需要花上数以时计,甚至以天计或以月计的辛苦代价时,你会看得到先前所花功夫的回报(即使没有人可以衡量这一点)。这不仅给你一个可更容易开发和调试的程序,也更易于理解和维护。这正是它在金钱上的价值所在。这一点有赖某种人生经验才能够了解,因为当你努力让某一段程序代码变得比较优雅时,你并不是处于一种具生产力的状态下。但是,请抗拒那些催促你赶工的人们,因为那么做只会减缓你的速度罢了。

2. 先求能动,再求快。

即使你已确定某段程序代码极为重要,而且是系统的重要瓶颈,这个准则依然成立。尽可能简化设计,让系统能够先正确动作。如果程序的执行不够快,再量测其效能。几乎你总是会发现,你所认为的”瓶颈”其实都不是问题所在。把你的时间花在刀口上吧。

3. 记住”各个击破”的原理。

如果你所探讨的问题过于混杂,试着想像该问题的基本动作会是什么,并假设这一小块东西能够神奇地处理掉最难的部分。这”一小块”东西其实就是对象–请撰写运用该对象的程序代码,然后检视对象,并将其中困难的部分再包装成其他对象,依此类推。

4. 区分class开发者和class使用者(使用端程序员)。

Class 使用者扮演着”客户”角色,不需要(也不知道)class的底层运作方式。Class开发者必须是class设计专家,并撰写class,使它能够尽可能被大多数新手程序员所用,而且在程序中能够稳当执行。一套程序库只有在具备通透性的情况下,使用起来才会容易。

5.当你撰写class时,试着给予明了易懂的名称,减少不必要的注解。

你给客户端程序员的接口,应该保持概念上的单纯性。不了这个目的,当函数的重载(overloading)适合制作出直觉、易用的接口时,请善加使用。

6. 也必你的分析和设计必须让系统中的classes保持最少,须让其Public interfaces保持最少,以及让这些classes和其他classes之间的关联性( 尤其是base classes)保持最少。

如果你的设计所得结果更甚于此,请问问自己,是否其中每一样东西在整个程序生命期中都饶富价值?如果并非如此,那么,维护它们会使你付出代价。开发团队的成员都有不维护”无益于生产力提升”的任何东西的倾向;这是许多设计方法无法解释的现象。

7. 让所有东西尽量自动化。先撰写测试用的程序代码(在你撰写class之前),并让它和class结合在一起。请使用makefile或类似工具,自动进行测试动作。

通过这种方式,只要执行测试程序,所有的程序变动就可以自动获得验证,而且可以立即发现错误。由于你知道的测试架构所具备的安全性,所以当你发现新的需求时,你会更勇于进行全面修改。请记住,程序语言最大的改进,是来自型别检查、异常处理等机制所赋予的内置测试动作。但这些功能只能协助你到达某种程度。开发一个稳固系统时,你得自己验证自己的classes或程序的性质。

8. 在你撰写class之前先写测试码,以便验证你的class 是否设计完备。如果你无法撰写测试码,你便无法知道你的class 的可能长相。撰写测试码通常能够显现出额外的特性(features)或限制 ( constraints)__它们并不一定总是能够在分析和设计过程中出现。测试码也可做为展示class 用法的示例程序。

9. 所有软件设计上的问题,都可以通过”引入额外的概念性间接层(conceptual indirection)”加以简化。这个软件工程上的基础法则是抽象化概念的根据,而抽象化概念正是面向对象程序设计的主要性质。

10. 间接层(indirection)应该要有意义(和准则-9致)。

这里所指的意义可以像”将共用程序代码置于惟一函数”这么简单。如果你加入的间接层(或抽象化、或封装等等)不具意义,它可能就和没有适当的间接层一样糟糕。

11. 让class尽可能微小而无法切割(atomic)。

赋予每个class单一而清楚的用途。如果你的classes或你的系统成长得过于复杂,请将复杂的classes切割成比较简单的几个classes。最明显的一个判断指针就是class的大小:如果它很大,那么它工作量过多的机会就可能很高,那就应该被切割。重新设计class的建议线索是:

1) 复杂的switch语句:请考虑运用多态(Polymorphism)。

2) 许多函数各自处理类型极为不同的动作:请考虑切割为多个不同的(classes)。

12. 小心冗长的引数列(argument lists)。

冗长的引数列会使函数的调用动作不易撰写、阅读、维护。你应该试着将函数搬移到更适当的class中,并尽量以对象为引数。

13. 不要一再重复。

如果某段程序代码不断出现于许多derived class函数中,请将该段程序代码置于某个base class 函数内,然后在derived class函数中调用。这么做不仅可以省下程序代码空间,也可以让修改该段程序代码动作更易于进行。有时候找出此种共通程序代码还可以为接口增加实用功能。

14. 小心switch语句或成串的if-else 子句。

通常这种情况代表所谓的”type-check coding”。也就是说究竟会执行哪一段程序代码,乃是依据某种型别信息来做抉择(最初,确切型别可能不十分明显)。你通常可以使用继承和多态来取代此类程序代码;Polymorphical method (多态函数)的调用会自动执行此类型别检验,并提供更可靠更容易的扩充性。

15. 从设计观点来看,请找出变动的事物,并使它和不变的事物分离。

也就是说,找出系统中可能被你改变的元素,将它们封装于classes中。你可以在《Thinking in Patterns with Java》(可免费下载于 www. BruceEckel. Com)大量学习到这种观念。

16. 不要利用subclassing来扩充基础功能。

如果某个接口元素对class而言极重要,它应该被放在base class 里头,而不是直到衍生(derivation)时才被加入。如果你在继承过程中加入了函数,或许你应该重新思考整个设计。

17. 少就是多。

从class 的最小接口开始妨展,尽可能在解决问题的前提下让它保持既小又单纯。不要预先考量你的class被使用的所有可能方式。一旦class被实际运用,你自然会知道你得如何扩充接口。不过,一旦class被使用后,你就无法在不影响客户程序代码的情况下缩减其接口。如果你要加入更多函数倒是没有问题–不会影响既有的客户程序代码,它们只需重新编译即可。但即使新函数取代了旧函数的功能,也请你保留既有接口。如果你得通过”加入更多引数”的方式来扩充既有函数的接口,请你以新引数写出一个重载化的函数;通过 这种方式就不会影响既有函数的任何客户了。

18. 大声念出你的classes,确认它们符合逻辑。

请base class和derived class 之间的关系是”is-a”(是一种),让class和成员对象之间的关系是”has-a”(有一个)。

19. 当你犹豫不决于继承(inheritance)或合成(组合,composition)时,请你问问自己,是否需要向上转型(upcast)为基础型别。

如果不需要,请优先选择合成(也就是是使用成员对象)。这种作法可以消除”过多基础型别”。如果你采用继承,使用者会认为他们应该可以向上转型。

20. 运用数据成员来表示数值的变化,运用经过覆写的函数(overrided method)来代表行为的变化 。

也就是说,如果你找到了某个 class, 带有一些状态变量,而其函数会依据这些变量值切换不同的行为,那么你或许就应该重新设计,在subclasses 和覆写后的函数(overrided methods)中展现行为止的差异。

21. 小心重载(overloading)。

函数不应该依据引数值条件式地选择执行某一段程序代码。这种情况下你应该撰写两个或更多个重载函数(overloaded methods)

22. 使用异常体系(exception hierarchies)

最好是从Java标准异常体系中衍生特定的classes, 那么,捕捉异常的人便可以捕捉特定异常,之后才捕捉基本异常。如果你加入新的衍生异常,原有的客户端程序仍能通过其基础型别来捕捉它。

23. 有时候简单的聚合(aggregation)就够了。

飞机上的”旅客舒适系统”包括数个分离的元素:座椅、空调、视讯设备等等,你会需要在飞机上产生许多这样的东西。你会将它们声明为Private成员并开发出一个全新的接口吗?不会的,在这个例子中,元素也是Public接口的一部分,所以仍然是安全的。当然啦,简单聚合并不是一个常被运用的解法,但有时候的确是。

24. 试着从客户程序员和程序维护的角度思考。

你的class应该设计得尽可能容易使用。你应该预先考量可能性有的变动,并针对这些 可能的变动进行设计,使这些变动日后可轻易完成。

25. 小心”巨大对象并发症”。

这往往是刚踏OOP领域的过程式(procedural)程序员的一个苦恼,因为他们往往最终还是写出一个过程式程序,并将它们摆放到一个或两个巨大对象中。注意,除了application framework (应用程序框架,译注:一种很特殊的、大型OO程序库,帮你架构程序本体)之外,对象代表的是程序中的观念,而不是程序本身。

26. 如果你得用某种丑陋的方式来达成某个动作,请将丑陋的部分局限在某个class里头。

27. 如果你得用某种不可移植方式来达成某个动作,请将它抽象化并局限于某个class里头。这样一个”额外间接层”能够防止不可移植的部分扩散到整个程序。这种作法的具体呈现便是Bridge设计模式(design pattern)。

28. 对象不应仅仅只用来持有数据。

对象也应该具有定义明确界限清楚的行为。有时候使用”数据对象”是适当的,但只有在通用形容器不适用时,才适合刻意以数据对象来包装、传输一群数据项。

29. 欲从既有的classes身上产生新的classes时,请以组合(composition)为优先考量。

你应该只在必要时才使用继承。如果在组合适用之处你却选择了继承,你的设计就渗杂了非必要的复杂性。

30. 运用继承和函数覆写机制来展现行为上的差异,运用fields(数据成员)来展现状态上的差异。

这句话的极端例子,就是继承出不同的classes表现各种不同的颜色,而不使用”color”field.

31. 当心变异性(variance)。

语意相异的两个对象拥有相同的动作(或说责任)是可能的。OO世界中存在着一种天生的引诱,让人想要从某个class继承出另一个subclass,为的是获得继承带来的福利。这便是所谓”变异性”。但是,没有任何正当理由足以让我们强迫制造出某个其实并不存在的superclass/subclass关系。比较好的解决方式是写出一个共用的base class,它为两个derived classes制作出共用接口–这种方式会耗用更多空间,但你可以如你所盼望地从继承机制获得好处,而且或许能够在设计上获得重大发现。

32. 注意继承上的限制。

最清晰易懂的设计是将功能加到继承得来的class里头;继承过程中拿掉旧功能(而非增加新功能)则是一种可疑的设计。不过,规则可以打破。如果你所处理的是旧有的class程序库,那么在某个class的subclass限制功能,可能会比重新制定整个结构(俾使新class得以良好地相称于旧 class)有效率得多。

33. 使用设计模式(design patterns)来减少”赤裸裸无加掩饰的机能(naked functionality)”。

举个例子,如果你的class只应该产出惟一一个对象,那么请不要以加思索毫无设计的手法来完成它,然后撰写”只该产生一份对象”这样的注解就拍拍屁股走人。请将它包装成singleton(译注:一个有名的设计模式,可译为”单件”)。如果主程序中有多而混乱的”用以产生对象”的程序代码,请找出类似 factory method这样的生成模式(creational patterns),使价钱可用以封装生成动作减少”赤裸裸无加掩饰的机能”(naked functionality)不仅可以让你的程序更易理解和维护,也可以阻止出于好意却带来意外的维护者。

34. 当心”因分析而导致的瘫痪(analysis paralysis)”。

请记住,你往往必须在获得所有信息之前让项目继续前进。而且理解未知部分的最好也最快的方式,通常就是实际前进一步而不只是纸上谈兵。除非找到解决办法,否则无法知道解决办法。Java拥有内置的防火墙,请让它们发挥作用。你在单一class或一组classes中所犯的错误,并不会伤害整个系统的完整性。

35. 当你认为你已经获得一份优秀的分析、设计或实现时,请试着加以演练。

将团队以外的某些人带进来-他不必非得是个顾问不可,他可以是公司其他团队的成员。请那个人以新鲜的姿态审视你们的成果,这样可以在尚可轻易修改的阶段找出问题,其收获会比因演练而付出的时间和金钱代价来得高。实现 (Implementation)

36. 一般来说,请遵守Sun的程序编写习惯。

价钱可以在以下网址找到相关文档:java.sun.com/docs/codeconv/idex.html。本书尽可能遵守这些习惯。众多Java程序员看到的程序代码,都有是由这些习惯构成的。如果你固执地停留在过去的编写风格中,你的(程序代码)读者会比较辛苦。不论你决定采用什么编写习惯,请在整个程序中保持一致。你可以在home.wtal.de/software-solutions/jindent上找到一个用来重排Java程序的免费工具。

37. 无论使用何种编写风格,如果你的团队(或整个公司,那就更好了)能够加以标准化,那么的确会带来显著效果。这代表每个人都可以在其他人不遵守编写风格修改其作品,这是个公平的游戏。标准化的价值在于,分析程序代码时所花的脑力较小,因而可以专心于程序代码的实质意义。

38. 遵守标准的大小写规范。

将 class名称的第一个字母应为大写。数据成员、函数、对象(references)的第一个字母应为小写。所有识别名称的每个字都应该连在一块儿,所有非首字的第一个字母都应该大写。例如: ThisIsAClassName thisIsAMethodOrFieldName 如果你在static final 基本型别的定义处指定了常量初始式(constant initializers),那么该识别名称应该全为大写,代表一个编译期常量。 Packages是个特例,其名称皆为小写,即使非首字的字母亦是如此。域名(org, net, edu 等等)皆应为小写。(这是Java 1.1迁移至Java 2时的一项改变) 。

39、不要自己发明”装饰用的”Private数据成员名称。

通常这种的形式是在最前端加上底线和其他字符,匈牙利命名法(Hungarian notation)是其中最差的示范。在这种命名法中,你得加入额外字符来表示数据的型别、用途、位置等等。仿佛你用的是汇编语言(assembly language)而编译器没有提供任何协肋似的。这样的命名方式容易让人混淆又难以阅读,也不易推行和维护。就让classes和packages来进行”名称上的范

围制定(name scoping)”吧。

40、当你拟定通用性的class时,请遵守正规形式(canonical form)。

包括equals( )、hashCode( )、clone( ) ( 实现出Cloneable),并实现出Comparable和Serialiable等等。

java拼图游戏代码,左右有图片对比,左边是打乱的图,右边是完成对比图,分为4个难度2*3,3*3 ,4*4,5*5.

晕,这都不会?还要别人给?我学习时做的,删掉了。没法给你……


当前题目:Java人左右走代码 java按钮左右移动的代码
本文链接:http://cdxtjz.cn/article/doddgps.html

其他资讯