java GUI TextField问题

想在GUI的一个图形界面中写入队列的功能,完成入队和出队,用的是TextField,但是TextField的那个getText()方法能不能一个数据一个数据的读呢,用什么方法,可以一个一个读,入队

1个回答

API显示这个函数的功能为:Returns the text that is presented by this text component.
貌似没有你说的这个功能的,它是返回这个控件的文本值的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java GUI编程 TextField 队列
TextField中输入一行数,通过这行数创建一个队列,入队,然后在另一个TextField中输出 出队的数据,如何实现呢
关于用Java GUI 做一个TCPClient&server请求响应,输出结果却无限循环的问题
学生小白一枚,TCPclient里输入文字后,不知道为何一直循环。 ``` import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.util.*; public class TCPserverGUI extends Frame implements ActionListener{ private static ServerSocket servSock; private static final int PORT = 9652; private Button btnStartServer; private static TextArea tareceiver; public TCPserverGUI(){ setTitle("TCP Server"); setLayout(new FlowLayout()); btnStartServer =new Button("Start"); add(btnStartServer); btnStartServer.addActionListener(this); tareceiver = new TextArea(); tareceiver.setEditable(false); add(tareceiver); } public static void main(String[] args){ TCPserverGUI Frame = new TCPserverGUI(); Frame.setSize(400,300); Frame.setVisible(true); Frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } } ); } public void actionPerformed(ActionEvent e){ tareceiver.setText("Opening port...\n"); try { servSock = new ServerSocket(PORT); //Step 1. } catch(IOException ioEx) { tareceiver.setText("Unable to attach to port!"); System.exit(1); } do { handleClient(); }while (true); } private static void handleClient(){ Socket link = null; //Step 2. try { link = servSock.accept(); //Step 2. Scanner input = new Scanner(link.getInputStream());//Step 3. PrintWriter output = new PrintWriter( link.getOutputStream(),true); //Step 3. int numMessages = 0; String message = input.nextLine(); //Step 4. while (!message.equals("***CLOSE***")) { tareceiver.setText("Message received from " + InetAddress.getLocalHost().toString() + ":"+message.toString()); numMessages++; output.println("Message " + numMessages + ": " + message); //Step 4. message = input.nextLine(); } output.println(numMessages + " messages received.");//Step 4. } catch(IOException ioEx) { ioEx.printStackTrace(); } finally { try { tareceiver.setText("\n* Closing connection... *"); link.close(); //Step 5. } catch(IOException ioEx) { tareceiver.setText("Unable to disconnect!"); System.exit(1); } } } } ``` ``` import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.util.*; public class TCPclientGUI extends Frame implements ActionListener{ private static InetAddress host; private static final int PORT = 9652; private Label lblEnterMessage; private static TextField tfmessage; private static TextArea taresult; private Button btnStart; private Thread thread1; public TCPclientGUI(){ setLayout(new BorderLayout(3,3)); lblEnterMessage = new Label("Enter Message"); add(lblEnterMessage, BorderLayout.WEST); tfmessage = new TextField(50); tfmessage.setEditable(true); add(tfmessage,BorderLayout.NORTH); taresult = new TextArea(50,100); taresult.setEditable(false); add(taresult,BorderLayout.CENTER); btnStart = new Button("Send"); add(btnStart,BorderLayout.SOUTH); btnStart.addActionListener(this); } public static void main(String[] args){ TCPclientGUI Frame = new TCPclientGUI(); Frame.setSize(400,300); Frame.setVisible(true); Frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } } ); Thread thread1 =new Thread(){ public void run(){ } }; thread1.start(); } public void actionPerformed(ActionEvent e){ try { host = InetAddress.getLocalHost(); } catch(UnknownHostException uhEx) { taresult.setText("Host ID not found!"); System.exit(1); } accessServer(); } private static void accessServer(){ Socket link = null; //Step 1. try { link = new Socket(host,PORT); //Step 1. Scanner input = new Scanner(link.getInputStream()); //Step 2. PrintWriter output = new PrintWriter(link.getOutputStream(),true); //Step 2. //Set up stream for keyboard entry... String userEntry = tfmessage.getText(); String message = null , response; do { System.out.print(""); message = userEntry; output.println(message); //Step 3. response = input.nextLine(); //Step 3. taresult.append("\nSERVER> " + response); }while (!message.equals("***CLOSE***")); } catch(IOException ioEx) { ioEx.printStackTrace(); } finally { try { taresult.setText("\n* Closing connection... *"); link.close(); //Step 4. } catch(IOException ioEx) { taresult.setText("Unable to disconnect!"); System.exit(1); } } } } ```
【求助】新手学习Java GUI遇到一些问题,希望大神帮忙解答一下,运行完Eclipse报了一大堆错误
``` /*需求:做一个窗体 * 功能是递归查找某目录下所有的MP4文件 * * */ package Test; import java.awt.*; import java.awt.event.*; import java.io.*; public class MyWindowDemo2 { private Frame f; private Button but; private TextField tf; private TextArea ta; MyWindowDemo2(){ init(); } public void init(){ f = new Frame("查找mp4"); f.setBounds(600,300,600,500); f.setLayout(new FlowLayout()); but = new Button("查找"); tf = new TextField(60); ta = new TextArea(25,70); f.add(tf); f.add(but); f.add(ta); myEvent(); f.setVisible(true); } private void myEvent(){ f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); but.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String dirPath = tf.getText(); ta.setText(""); listMp4File(dirPath); } }); } public void listMp4File(String dirPath){ File dir = new File(dirPath); if(dir.isDirectory()){ File[] files = dir.listFiles(); for(File file : files){ if(file.isDirectory()){ listMp4File(file.getPath()); } else{ if(file.getName().endsWith("mp4")){ ta.append(file.getName()); } } } } else{ System.out.println("目录不存在!"); } } public static void main(String[] args){ new MyWindowDemo2(); } } ![图片说明](https://img-ask.csdn.net/upload/201904/23/1555989048_548222.png) ```
JAVA,GUI聊天功能,只做到发送信息和聊天记录,但是聊天记录不知道为什么不能不能查看
public class Demo_GUIChat extends JFrame { /** * */ private static final long serialVersionUID = 1L; private TextField tf; private Button send; private Button log; private Button clear; private Button shake; private TextArea viewText; private TextArea sendText; private DatagramSocket socket; private BufferedWriter bw; public Demo_GUIChat(){ init(); southPanel(); centerPanel(); event(); } private void event() { this.addWindowFocusListener(new WindowAdapter() { @Override public void windowOpened(WindowEvent e) { try { socket.close(); bw.close(); } catch (IOException e1) { e1.printStackTrace(); } System.exit(0); } }); send.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { try { send(); } catch (Exception e) { e.printStackTrace(); } } }); log.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { logFile(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }); } private void logFile() throws IOException { bw.flush(); //刷新缓冲区 FileInputStream fis = new FileInputStream("config.txt"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); //在内存中创建缓冲区 int len; byte[] arr = new byte[8192]; while((len = fis.read(arr)) != -1) { baos.write(arr,0,len); } String str = baos.toString(); //将内存中的内容转换成字符串 viewText.setText(str); fis.close(); } private void send() throws IOException { String message = sendText.getText(); //获取发送区域的内容 String ip = tf.getText(); //获取IP地址 DatagramPacket packet = new DatagramPacket(message.getBytes(), message.getBytes().length, InetAddress.getByName(ip), 1213); socket.send(packet); //发送数据 String time = getCurrentTime(); String str = time + "\r\n" + message + "\r\n\r\n"; //alt +shift +l 抽取局部变量 viewText.append(str); //将信息添加到显示区域中 bw.write(str); //将信息写到数据库中 sendText.setText(""); } private String getCurrentTime() { Date d = new Date(); //创建当前日期对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(d); //将时间格式化 } private void centerPanel() { Panel center = new Panel(); viewText = new TextArea(); sendText = new TextArea(5,1); center.setLayout(new BorderLayout()); //设置为边界布局管理器 center.add(sendText,BorderLayout.SOUTH); center.add(viewText,BorderLayout.CENTER); viewText.setEditable(false); viewText.setBackground(Color.WHITE); sendText.setFont(new Font("zzz",Font.PLAIN,15)); viewText.setFont(new Font("zzz",Font.PLAIN,15)); this.add(center,BorderLayout.CENTER); } private void southPanel() { Panel south = new Panel(); tf = new TextField(15); tf.setText("127.0.0.1"); send = new Button("发送"); log = new Button("记录"); clear = new Button("清除"); shake = new Button("震动"); System.out.println(shake.getLabel()); south.add(tf); south.add(send); south.add(log); south.add(clear); south.add(shake); this.add(south,BorderLayout.SOUTH); } public void init() { this.setLocation(500,50); this.setSize(400,600); new Reveive().start(); try { socket = new DatagramSocket(); bw = new BufferedWriter(new FileWriter("config.txt",true)); //需要在尾部追加 所以加上true } catch (Exception e) { e.printStackTrace(); } this.setVisible(true); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } private class Reveive extends Thread{ //接收和发送需要同时执行,所以 public void run() { try { DatagramSocket socket = new DatagramSocket(1213); DatagramPacket packet = new DatagramPacket(new byte[8192], 8192); while(true) { socket.receive(packet); //接收信息 byte[] arr = packet.getData(); //获取字节数据 int len = packet.getLength(); //获取有效的字节数据 String message = new String(arr,0,len); //转换成字符串 String time = getCurrentTime(); //获取当前时间 String ip = packet.getAddress().getHostAddress(); //获取ip地址 String str = time + " " + ip + "对我说:\r\n" + message + "\r\n\r\n"; viewText.append(str); bw.write(str); } } catch (Exception e) { e.printStackTrace(); } } } public static void main(String[] args) throws Exception { new Demo_GUIChat(); } }
想在GUI的一个图形界面中写入队列的功能
想在GUI的一个图形界面中写入队列的功能,完成入队和出队,用的是TextField,但是TextField的那个getText()方法能不能一个数据一个数据的读呢,用什么方法,可以一个一个读,入队
Java中Jlabel文字对齐居中的问题
我定义了三个panel:panel1,panel2,panel;panel包含panel1和panel2 panel1中有一个label1(文字),一个textfield;panel2中有一个label2(文字) 如何使得label1和label2对齐居中,而不是panel1和panel2对齐居中?
如何初始化JTextField以及如何使用JTextField中的selectAll方法
先列出代码 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class JTextFieldGui{ JTextField textField; JLabel labelInput; JLabel labelOutput; public static void main(String[] args) { JTextFieldGui gui = new JTextFieldGui(); gui.go(); } public void go(){ JFrame frame = new JFrame(); JPanel panelInput = new JPanel(); JPanel panelOutput = new JPanel(); labelInput = new JLabel("Your first name: "); labelOutput = new JLabel("Enter your name, and you will see it here."); textField = new JTextField(20);//<---问题1 JButton enter = new JButton("Enter"); JButton selectAll = new JButton("Select all text"); frame.setSize(300,200); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); panelInput.setLayout(new BoxLayout(panelInput, BoxLayout.X_AXIS)); textField.addActionListener(new LabelActionListener()); enter.addActionListener(new LabelActionListener()); selectAll.addActionListener(new TextFieldActionlistener()); frame.getContentPane().add(BorderLayout.NORTH, panelInput); panelInput.add(labelInput); panelInput.add(textField); panelInput.add(enter); panelInput.add(selectAll); frame.getContentPane().add(BorderLayout.CENTER, panelOutput); panelOutput.add(labelOutput); } class LabelActionListener implements ActionListener{ public void actionPerformed(ActionEvent event){ labelOutput.setText(textField.getText()); } } class TextFieldActionlistener implements ActionListener{ public void actionPerformed(ActionEvent event){ textField.selectAll();//<---问题2 } } } 问题1:已经定义了textfield的大小为20列,但是,结果还是会占满整行 问题2:创建并监听了一个按钮selectall,用于全选textfield中的字符,但是并没有反应,是什么原因呢 问题3:另外之前还有个莫名其妙的错误,现在又没有了,无法将类 JTextField中的构造器 JTextField应用到给定类型,下面还有几行,写的是,需要:没有参数,总之就是说JTextField(int)是错误的 求指教!!!
请问如何点击按钮就可以弹出图片?
``` import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Arrays; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.*; import java.awt.Image; //让GUI继承Icon可以画图 public class GUI implements Icon{ static JButton Button1 = new JButton("父亲"); static JButton Button2 = new JButton("母亲"); static JButton Button3 = new JButton("儿子"); static JButton Button4 = new JButton("女儿"); static JButton Button5 = new JButton("姐姐"); static JButton Button6 = new JButton("妹妹"); static JButton Button7 = new JButton("哥哥"); static JButton Button8 = new JButton("弟弟"); static JButton Button9 = new JButton("老婆"); static JButton Button10 = new JButton("删除"); static JButton Button11 = new JButton("清空"); static JButton Button12 = new JButton("等于"); static JTextField txt =new JTextField("",10); static String[] str = new String[15]; static int i = 0; //写死一个标签,用来存放图片,写了再说管这么多 static JLabel label; private ImageIcon father = new ImageIcon ("D:\\图片\\亲属计算器图片\\大耳朵图图\\爸爸.jpg"); // JDialog txt1 =new JDialog(); public static void main(String[] args) { JFrame frame = new JFrame("亲戚计算器"); /* final Box base = Box.createVerticalBox(); final Box box1 = Box.createHorizontalBox(); final Box box2 = Box.createHorizontalBox(); //在这里先导入图片 ImageIcon image_father = new ImageIcon("D:\\图片\\亲属计算器图片\\大耳朵图图\\爸爸.jpg"); image_father.setImage(image_father.getImage().getScaledInstance(100, 200, 70)); Button1.setIcon(image_father);*/ // box1.add(Button1); // base.add(box1); // frame.add(base); /* 思路,先添加一块区域,可以用来显示图片,再在此基础上添加响应事件 其实就是Label*/ frame.setBounds(600,260,1000,1000); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel outLabel = new JLabel(); //frame.add(father); JPanel panel = new JPanel(); frame.add(panel); panel.setLayout(null); placeComponents(panel); new GUI(panel); System.out.println(str[0]); //这里其实只监听了文本,并且只能够监听文本 MyActionListener1 myActionListener1 = new MyActionListener1(txt,outLabel); MyActionListener2 myActionListener2 = new MyActionListener2(txt); MyActionListener3 myActionListener3 = new MyActionListener3(txt); MyActionListener4 myActionListener4 = new MyActionListener4(txt); Button1.addActionListener(myActionListener1); Button2.addActionListener(myActionListener1); Button3.addActionListener(myActionListener1); Button4.addActionListener(myActionListener1); Button5.addActionListener(myActionListener1); Button6.addActionListener(myActionListener1); Button7.addActionListener(myActionListener1); Button8.addActionListener(myActionListener1); Button9.addActionListener(myActionListener1); Button10.addActionListener(myActionListener2); Button11.addActionListener(myActionListener3); Button12.addActionListener(myActionListener4); frame.setVisible(true); } private static void placeComponents(JPanel panel) { // TODO Auto-generated method stub } public GUI(JPanel panel) { txt.setBounds(10,10, 200, 36); panel.add(txt); Button1.setBounds(30, 150, 80, 50); panel.add(Button1); Button2.setBounds(110, 150, 80, 50); panel.add(Button2); Button3.setBounds(190, 150, 80, 50); panel.add(Button3); Button4.setBounds(30, 200, 80, 50); panel.add(Button4); Button5.setBounds(110, 200, 80, 50); panel.add(Button5); Button6.setBounds(190, 200, 80, 50); panel.add(Button6); Button7.setBounds(30, 250, 80, 50); panel.add(Button7); Button8.setBounds(110, 250, 80, 50); panel.add(Button8); Button9.setBounds(190, 250, 80, 50); panel.add(Button9); Button10.setBounds(400, 150, 80, 50); panel.add(Button10); Button11.setBounds(400, 200, 80, 50); panel.add(Button11); Button12.setBounds(400, 250, 80, 50); panel.add(Button12); //与文本类似,这里放了一个标签,可以用来准备显示图片 // Button1.setBounds(400, 150, 80, 50); // panel.add(Button10); } } /*class MyActionListener0 implements ActionListener{//按键后显示相应的图片 private JImageField imageField; }*/ class MyActionListener1 implements ActionListener{//按键后文本框显示,获取相应文本及图片 //即需要定义一个图片区域,并且需要判断这个文字对应的图片 //这才是关键的监听代码的区域 private JTextField textField; public MyActionListener1(JTextField txt, JLabel label) { super(); this.textField = txt; } //每按一次按钮,此方法都会自动调用一次 public void actionPerformed(ActionEvent e) {//名称按键 // TODO Auto-generated method stub textField.setText(textField.getText()+e.getActionCommand()+"的"); GUI.str[GUI.i] = e.getActionCommand().substring(0,2); GUI.i++; //System.out.println(Arrays.toString(GUI.str)); //System.out.println(textField.getText()+e.getActionCommand()+"的"); } } class MyActionListener2 implements ActionListener{//删除方法 private JTextField textField; public MyActionListener2(JTextField txt) { super(); this.textField = txt; } public void actionPerformed(ActionEvent e) { textField.setText(textField.getText().substring(0, textField.getText().length()-3)); GUI.str[GUI.i] = null; GUI.i--; } } class MyActionListener3 implements ActionListener{//清空按键 private JTextField textField; public MyActionListener3(JTextField txt) { super(); this.textField = txt; } public void actionPerformed(ActionEvent e) { textField.setText(textField.getText().substring(0, 0)); for (int i = 0; i <= GUI.i; i++) { GUI.str[i] = null; } GUI.i = 0; } } class MyActionListener4 implements ActionListener{//计算按键 private JTextField textField; public MyActionListener4(JTextField txt) { super(); this.textField = txt; } public void actionPerformed(ActionEvent e) { Jisuanqi jsp = new Jisuanqi(); textField.setText(jsp.jisaunmian(GUI.str, "y")); for (int i = 0; i <= GUI.i; i++) { GUI.str[i] = null; } GUI.i = 0; } } ``` 这是部分代码,运行不出来,因为少了其它的配合的类,主要是要在MyActionListener1中添加一些代码,使得点击Button1-9不仅可以弹出文字,还可以弹出图片。
frame里面加textfield在鼠标点击它的位置后才显示出来
比如这个代码,运行时只能弹出一个空得frame,只有点击了textfield得位置,它才显示出来,我是在mac下编的,且有用windowbuilder,再自己修改 public KeyFrame() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); setVisible(true); tf = new JTextField(); tf.addKeyListener(new KeyMonitor()); tf.setBounds(81, 75, 294, 133); contentPane.add(tf); tf.setColumns(10); }
一个关于java数据报做的简单聊天的问题
数据只能从Client端发送到Server端,Server端发送到Client端不仅重复发送,而且Client端貌似接收不到,请问问题出在哪里,怎么解决? PS:希望能在Client端之间聊天 :) [code="java"] public class Server extends JFrame implements Runnable { final static int MEMBER_COUNT = 2,PORT_NUMBER =5000;//最大连接数目 private JTextArea displayArea; // displays packets received private DatagramSocket socket; // socket to connect to client Member[] members; int number = 0;//已经连接到的client数目 // 创建 GUI 和 DatagramSocket public Server() { super( "Server" ); members =new Member[Server.MEMBER_COUNT]; displayArea = new JTextArea(); // create displayArea add( new JScrollPane( displayArea ), BorderLayout.CENTER ); setSize( 400, 300 ); // set size of windows this.addWindowListener(new WindowAdapter(){ @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub socket.close(); } }); setVisible( true ); // show window try // create DatagramSocket for sending and receiving packets { socket = new DatagramSocket( Server.PORT_NUMBER ); } // end try catch ( SocketException socketException ) { socketException.printStackTrace(); System.exit( 1 ); } // end catch } // end Server constructor //连接到服务器 public boolean connectTo(InetAddress address) { for(int i=0;i&lt;server.member_count if members new member number this.displaymessage return true false private boolean isfirst a for i="0;i&amp;lt;Server.MEMBER_COUNT;i++)" public void waitforpackets while try receive packet display contents copy to client byte data set up datagrampacket receivepacket="new" data.length socket.receive wait this.connectto system.out.printf string sendpackettoclient send end catch ioexception displaymessage ioexception.tostring ioexception.printstacktrace method echo throws create sendpacket receivepacket.getlength socket.send manipulates displayarea in the event-dispatch thread final messagetodisplay swingutilities.invokelater runnable run updates displayarea.append message anonymous inner class call todo auto-generated stub server extends jframe implements jtextfield enterfield entering messages jtextarea displaying datagramsocket socket connect name gui and myname super here enterfield.addactionlistener actionlistener actionperformed actionevent event get from textfield message.getbytes convert bytes inetaddress.getlocalhost enterfield.settext addactionlistener add borderlayout.north jscrollpane borderlayout.center setsize window size setvisible show sending receiving packets socketexception socketexception.printstacktrace system.exit constructor arrive system.out.println ok receivepacket.getdata exception exception.tostring exception.printstacktrace int port inetaddress address this.port="port;" this.address="address;" servertest static main args application="new" client1="new" executorservice e="Executors.newFixedThreadPool(3);" e.execute&gt;&lt;/server.member_count&gt;
为什么这段代码在Debug里可以达到想要的效果,而直接运行却达不到想要的效果
* * 3.从键盘接受多个int型的整数,直到用户输入end结束 要求:把所有的整数按倒序写到D:\\number.txt中 因为前段时间看视频学习了一下GUI, 我想要用Gui里的Frame窗口来完成这个小题目,于是就添加了一些组件,但我发现直接运行这段代码后number.txt没有我想要的结果(","分割输入的内容,再加到集合里,再写到number.txt里),但是如果在最后一个foreach循环设置断点后debug,却可以写到number.txt里,很疑惑,求大神为萌新解答. * static TextField tf=new TextField(); static ArrayList <String>list=new ArrayList(); public static void main(String[] args) throws IOException { BufferedWriter bf=new BufferedWriter(new FileWriter("number.txt")); Button b=new Button("end"); Label l=new Label("请输入一串整数,以end键结束"); Frame f=new Frame("输入"); Frame frame = new Frame("s"); f.setVisible(true); f.setBounds(400, 250,300,200); f.add(l,BorderLayout.NORTH); f.add(tf,BorderLayout.CENTER); f.add(b,BorderLayout.SOUTH); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String a[]=tf.getText().split(","); for(int j=0;j<a.length;j++) { list.add(a[j]); } } }); for (String str : list) { bf.write(str+" "); } bf.close(); } ``` ```
求帮忙改改,使能运行!!!
package client; import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.AbstractButton; public class Client extends JFrame { private JTextField nameField1,mailField2,field; private JRadioButton maleButton,womenButton; private JComboBox sdept; private ButtonGroup radioGroup; private JButton button; private JTextArea displayArea,displayArea2; private DatagramSocket socket; // set up GUI and DatagramSocket public Client() { super( "客户应用" ); Container container = getContentPane(); container.setLayout(new FlowLayout()); Box box1=Box.createHorizontalBox(); JLabel label1=new JLabel("姓名:"); box1.add(label1); nameField1= new JTextField(10); box1.add(nameField1); container.add(box1); Box box2=Box.createHorizontalBox(); JLabel label2=new JLabel("性别:"); box2.add(label2); maleButton=new JRadioButton("男",true); box2.add(maleButton); womenButton=new JRadioButton("女",false); box2.add(womenButton); radioGroup= new ButtonGroup(); radioGroup.add(maleButton); radioGroup.add(womenButton); container.add(box2); JLabel label3=new JLabel("电子邮箱:"); container.add(label3); mailField2=new JTextField(20); container.add(mailField2); Box box3=Box.createHorizontalBox(); JLabel label4=new JLabel("备注:"); box3.add(label4); displayArea=new JTextArea(5,12); box3.add(new JScrollPane( displayArea )); button=new JButton("提交"); box3.add(button); container.add(box3); Box box4=Box.createHorizontalBox(); displayArea2=new JTextArea(5,13); box4.add(displayArea2); container.add(box4); setSize( 300,500); setVisible( true ); button .addActionListener( new ActionListener() { public void actionPerformed( ActionEvent event ) { // create and send packet try { // get message from textfield and convert to byte array String string=new String(); string ="姓名:" +nameField1.getText() + "\n"+"性别:" +radioGroup.getElements().nextElement()+ "电子邮箱:"+mailField2.getText()+"备注:"+displayArea.getText(); String message = string; byte data[] = message.getBytes(); // create sendPacket DatagramPacket sendPacket = new DatagramPacket( data, data.length, InetAddress.getLocalHost(), 5000 ); socket.send( sendPacket ); // send packet } catch ( IOException ioException ) { ioException.printStackTrace(); } } // end actionPerformed } // end inner class ); // end call to addActionListener // create DatagramSocket for sending and receiving packets try { socket = new DatagramSocket(); } // catch problems creating DatagramSocket catch( SocketException socketException ) { socketException.printStackTrace(); System.exit( 1 ); } } // wait for packets to arrive from Server, display packet contents private void waitForPackets() { while ( true ) { // loop forever // receive packet and display contents try { // set up packet byte data[] = new byte[ 100 ]; DatagramPacket receivePacket = new DatagramPacket( data, data.length ); socket.receive( receivePacket ); // wait for packet // display packet contents displayMessage( "服务器收到的信息是:"+ new String( receivePacket.getData(), 0, receivePacket.getLength() ) + "\n长度为: " + receivePacket.getLength()+ "\n\n对方主机: " + receivePacket.getAddress() + "\n端口号: " + receivePacket.getPort() ); } // process problems receiving or displaying packet catch( IOException exception ) { displayMessage( exception.toString() + "\n" ); exception.printStackTrace(); } } // end while } // displayArea in the event-dispatch thread private void displayMessage( final String messageToDisplay ) { // display message from event-dispatch thread of execution SwingUtilities.invokeLater( new Runnable() { // inner class to ensure GUI updates properly public void run() // updates displayArea { displayArea2.append( messageToDisplay ); } } // end inner class ); } public static void main( String args[] ) { Client application = new Client(); application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); application.waitForPackets(); } }
页面如何展现两个或多个表格?
[img]http://dl.iteye.com/upload/attachment/143660/a546bfcb-b38d-3fcc-8cd1-87ab59732833.jpg[/img] 界面设计图如上图。 一个界面要竖排显示几个表格,并且还有其他固定的字段,这种布局该怎么实现? 以前只展现一个表格的代码如下: JSP页面: [code="java"]<%@page contentType="text/html;charset=UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk" /> <title>信息查询</title> <%@ include file="/common/gui_lib.jsp"%> <link href="gtcss.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="../../scripts/repository/misc/misc.js"></script> <script src="../../scripts/repository/ux/RowFitLayout.js" type="text/javascript"></script> <script type="text/javascript"> Ext.onReady(function() { Ext.QuickTips.init(); Ext.form.Field.prototype.msgTarget = 'side'; var formcondition = new cis.repository.stockorder.QueryCondition(); var integStatusGrid = new cis.repository.stockorder.ListPanel(); var view=new Ext.Viewport( { frame:true, layout:'row-fit', defaults: { bodyStyle: 'padding:4px 4px 4px 4px' }, items:[formcondition,integStatusGrid] }); view.doLayout(); }); </script> </head> <div id='tpl-table'/> </html> [/code] misc.js文件: [code="java"]Ext.ns("cis.repository.stockorder"); include('scripts/repository/locale/misc_zh.js'); include('scripts/repository/ux/PageSizePlugin.js'); include('scripts/repository/validator/Validators.js'); include('scripts/repository/ux/PagingToolBar.js'); include('scripts/repository/ux/RemoteValidator.js'); include('scripts/repository/ux/PagingMemoryProxy.js'); include('scripts/sysCommonData.js'); cis.repository.stockorder.QueryCondition = function() { var sendPhone = new Ext.form.TextField({ id : 'sendPhone', allowBlank : false, fieldLabel : this.resourceBundle.ConditionProperty.PHONE, selectOnFocus : true, anchor:'90%' }); var querybutton = new Ext.Button({ text : "查询", minWidth : '75', handler : function() { var gridPanel = Ext.getCmp("list-stockOrder-form-panel"); if(Ext.getCmp('stockOrder-query').checkData()){ var gridPanelStore = gridPanel.getStore(); gridPanelStore.baseParams.sendPhone = sendPhone .getValue(); gridPanelStore.removeAll(); gridPanelStore.load({ params : { start : 0, limit : gridPanel.myPageSize } }); } } }); cis.repository.stockorder.QueryCondition.superclass.constructor.call( this, { id : 'stockOrder-query', title :"查询条件", width : '100%', height : 70, border : true, frame : true, collapsible : true, deferredRender : false, labelAlign : 'right', items : [{ layout : "column", bodyStyle:"padding:1px 10px 5px 10px", items : [{ columnWidth : .40, layout : 'form', labelWidth:55, items : [sendPhone] }, { columnWidth : .20, layout : 'form', buttonAlign:'left', items : [querybutton] }] }] }); }; Ext.extend(cis.repository.stockorder.QueryCondition, Ext.form.FormPanel, {}); cis.repository.stockorder.ListPanel = function() { var fm = Ext.form; this.myPageSize = 20; // column model var commCM = new Ext.grid.ColumnModel([{ id : 'sp', align : 'center', header : SP, dataIndex : 'sp', width : 150, editor:new fm.TextField, sortable : true }, { id : 'operation', align : 'center', header : OPERATION, dataIndex : 'operation', width : 150, editor:new fm.TextField, sortable : true } ]); commCM.defaultSortable = false; var commRecord = new Ext.data.Record.create([{ name : 'sp', mapping : 'sp' }, { name : 'operation', mapping : 'operation' }]); // reader is for Data Reading from DB or Local Data var communicateReader = new Ext.data.JsonReader({ root : 'elements', totalProperty : 'totalElements', id : 'id' }, commRecord); this.dataStore = new Ext.data.GroupingStore({ proxy : new Ext.data.HttpProxy({ url : '../../extend/misc/qryMobile.action' }), reader : communicateReader //autoLoad : true }); var pagingbar = new Ext.PagingToolbar({ pageSize : this.myPageSize, store : this.dataStore, displayInfo : true, plugins : [new Ext.ux.PageSizePlugin()] }); cis.repository.stockorder.ListPanel.superclass.constructor.call(this, { id : 'list-stockOrder-form-panel', collapsible : false, region : 'center', store : this.dataStore, colModel : commCM, frame : true, // bodyStyle : 'width:100%', title : "", clicksToEdit :2, bbar : pagingbar, stripeRows : true, autoScroll : true, viewConfig : { enableRowBody:false }, loadMask : { msg : MSG_DATA_LOADING }, width : '100%', height : '80%', layout : 'fit', monitorResize : true, doLayout : function() { this.setWidth(Ext.get(this.getEl().dom.parentNode) .getSize(true).width); Ext.grid.GridPanel.prototype.doLayout.call(this); }, autoShow : true, border : false }); } Ext.extend(cis.repository.stockorder.ListPanel, Ext.grid.EditorGridPanel, { reload : function() { this.dataStore.load({ params : { start : 0, limit : this.myPageSize }, delay : 750 }); } }); [/code] 以上是我展现一个表格的代码,现在该怎么办呢?
Ext.grid.PropertyGrid里的内容如何设置居右
[code="java"] cis.repository.smap.PropertyGridPanel.superclass.constructor.call(this, { id : 'propGrid', title : this.resourceBundle.FieldLabel.RESULT, frame : true, // autoHeight:true, hideHeaders : true, autoWidth : true, nameWidth : 400, valueWidth : 600, source : {} }); Ext.extend(cis.repository.smap.PropertyGridPanel, Ext.grid.PropertyGrid, {});[/code] 如何设置PropertyGridPanel里固定左边表头居右,右边输出内容居左呢??? 很急啊,请教大家了 [b]问题补充:[/b] 楼下的 这个样式放哪里 能否详细点,你这样我还是不清楚。 [b]问题补充:[/b] 我是需要source里的固定的表头居右,输出内容居左。 这样式往哪里加啊? [b]问题补充:[/b] 你有QQ 或MSN 吗, 我这问题很急 [b]问题补充:[/b] 这个好像没有用 [b]问题补充:[/b] 这是我的JSP页面setUserInfo.jsp,按你的加了样式 [code="java"]<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="../../../common/gui_lib.jsp"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="../../../scripts/repository/ux/XPropertyGrid.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/scripts/repository/mobilehome/setUserInfo.js"></script> <script type="text/javascript" src="../../../scripts/repository/ux/RowFitLayout.js"></script> <style> .ext-ie .x-menu-item-icon {left: -24px;} .ext-strict .x-menu-item-icon {left: 3px;} .ext-ie6 .x-menu-item-icon {left: -24px;} .x-props-grid .x-grid3-hd-name{ text-align:right; } .x-props-grid .x-grid3-td-value{ text-align:left; } </style> <script type="text/javascript"> Ext.onReady(function() { Ext.QuickTips.init(); var formpanecondition = new cis.repository.smap.QueryCondition(); var exPropertyGrid = new cis.repository.smap.PropertyGridPanel(); var view=new Ext.Viewport( { layout:'row-fit', frame:true, items:[formpanecondition,exPropertyGrid] }); view.doLayout(); renderTo:'tab1'; }); </script> </head> <body> <div id="tab1"></div> </body> </html> [/code] 这是我的JS文件setUserInfo.jsp [code="java"] Ext.ns("cis.repository.smap"); include('scripts/repository/locale/queryHomeUserInfo_zh.js'); include('scripts/repository/locale/common_zh.js'); cis.repository.smap.QueryCondition = function() { var sequenceX = new Ext.form.TextField({ allowBlank : false, fieldLabel : this.resourceBundle.FieldLabel.PHONENO, // labelSeparator : '', name : 'sequenceX', anchor : '95%' }); var queryButton = new Ext.Button({ text : BUTTON_SEARCH, minWidth : COMMONDATA_QUERY_BUTTON, handler : function() { var mk = new Ext.LoadMask("propGrid", { msg : MSG_DATA_LOADING, removeMask : true // 完成后移除 }); mk.show(); // 显示 // var updatePropertyBt = Ext.getCmp("edit-menuitem-btn"); if (sequenceX.getValue() != '') { var sequence = sequenceX.getValue(); Ext.Ajax.request({ url : '../../../extend/mobilehome/searchUserInfo.action', method : 'POST', timeout : "120000", params : { phoneNuber : sequence }, success : function(form, action) { // Ext.getCmp("propGrid").setSource({ // "msisdn" : "msisdn", // "prefAreaFlag1" : "prefAreaFlag1" // }); mk.hide(); var result = Ext.util.JSON .decode(form.responseText); // alert(result.success); // alert("result:" + result.data); // alert(result.msg); // var msisdn = "13957160043"; if (result.success == "true") { var gridPanel = Ext.getCmp("propGrid"); //alert("---="+result.data.msisdn); gridPanel.setSource({ "用户号码" : result.data.msisdn, "业务状态" : result.data.serviceState, "内部套餐号" : result.data.innerPkgid , "优惠区提醒开关" : result.data.serviceFlag1, "非优惠区提醒开关" : result.data.serviceFlag2, "提醒方式" : result.data.serviceFlag3, "业务申请时间" : result.data.createTime, "业务开通时间" : result.data.beginTime, "业务取消时间" : result.data.endtime, "最近一次提醒注册优惠区时间" : result.data.lstRegnotifyTime, "是否启用后备优惠区域1" : result.data.prefAreaFlag1, "优惠区1的一天内注册次数" : result.data.regareAcnt1, "优惠区域1的最近一次定位时间" : result.data.lstDetectTime1, "是否启用后备优惠区域2" : result.data.prefAreaFlag2, "优惠区2的一天内注册次数" : result.data.regareAcnt2, "优惠区域2的最近一次定位时间" : result.data.lstDetectTime2, "是否启用后备优惠区域3" : result.data.prefAreaFlag3, "优惠区3的一天内注册次数" : result.data.regareAcnt3, "优惠区域3的最近一次定位时间" : result.data.lstDetectTime3, "是否启用后备优惠区域4" : result.data.prefAreaFlag4, "优惠区4的一天内注册次数" : result.data.regareAcnt4, "优惠区域4的最近一次定位时间" : result.data.lstDetectTime4 }); // alert("sdkfjslfjsf"); // gridPanel.load(); // alert(result.data); // gridPanel.load(result.data); // updatePropertyBt.enable(); } else { Ext.Msg.show({ title : MSG_TITLE, msg : result.msg, buttons : Ext.Msg.OK, icon : Ext.Msg.ERROR }); } }, failure : function(form, action) { // alert("failure"); mk.hide(); Ext.Msg.show({ title : MSG_TITLE, msg : MSG_EXCEPTION, buttons : Ext.Msg.OK, icon : Ext.Msg.ERROR }); } }); } else { Ext.MessageBox.alert(MSG_TITLE, MSG_FIX_ERROR); } } }); var resetbutton = new Ext.Button({ text : this.resourceBundle.FieldLabel.RESET, handler : function() { queryPhoneNumber.reset(); } }); cis.repository.smap.QueryCondition.superclass.constructor.call(this, { id : 'websmapquerycondition', title : MSG_QUERYCONDITON, width : '100%', collapsible : true, height : 70, bodyStyle : "padding:5px 10px 5px 10px", frame : true, defaults : { anchor : '90%' }, items : [{ layout : "form", xtype : 'panel', baseCls : "x-plain", labelAlign : 'right', defaults : { baseCls : "x-plain" }, items : [{ layout : "column", items : [{ columnWidth : .33, layout : 'form', height : 25, labelAlign : 'left', labelWidth : 55, items : [sequenceX] }, { columnWidth : .1, layout : 'form', height : 25, buttonAlign : 'right', items : [queryButton] }] }] }] }); }; Ext.extend(cis.repository.smap.QueryCondition, Ext.form.FormPanel, {}); function updateFNOs(source) { var jsonDataStr = null; if (source) { jsonDataStr = Ext.encode(source); } if (jsonDataStr) { var mk = new Ext.LoadMask("propGrid", { msg : MSG_DATA_LOADING, removeMask : true }); mk.show(); var requestCg = { url : '../../../extend/mobilehome/editUserInfo.action', method : 'post', params : { jsonData : jsonDataStr }, timeout : 120000, callback : function(options, success, response) { // alert(success + "\t" + response); mk.hide(); mk.destroy(); if (!success) { Ext.MessageBox.show({ title : MSG_TITLE, msg : MSG_EXCEPTION, icon : Ext.MessageBox.ERROR, buttons : Ext.MessageBox.OK }); } else { if (response) { var infoData = Ext.decode(response.responseText); var msg = infoData.msg; var operateRslt = infoData.success; if (operateRslt && operateRslt != "true") { Ext.MessageBox.show({ title : MSG_TITLE, msg : msg, icon : Ext.MessageBox.ERROR, buttons : Ext.MessageBox.OK }); } else { Ext.MessageBox.show({ title : MSG_TITLE, msg : msg, icon : Ext.MessageBox.INFO, buttons : Ext.MessageBox.OK }); } } } } } Ext.Ajax.request(requestCg); } else { return false; } } cis.repository.smap.PropertyGridPanel = function() { var menubar = new Ext.Toolbar({ items : [{ id : 'edit-menuitem-btn', text : "修改", disabled : true, iconCls : 'edit', icon : '../../../images/default/button/edit.gif', handler : function() { var grid = Ext.getCmp("propGrid"); if (grid) { var source = grid.getSource(); updateFNOs(source); this.disable(); } } }] }); var pStore = new Ext.grid.PropertyStore({}); cis.repository.smap.PropertyGridPanel.superclass.constructor.call(this, { id : 'propGrid', title : this.resourceBundle.FieldLabel.RESULT, frame : true, // autoHeight:true, hideHeaders : true, autoWidth : true, nameWidth : 400, valueWidth : 600, // tbar : menubar, style:".x-props-grid .x-grid3-hd-name{ text-align:right;}", customEditors : { "是否启用后备优惠区域1" : new Ext.grid.GridEditor(new Ext.form.ComboBox({ editable : false, displayField : 'prefAreaFlag1', mode : 'local', triggerAction : 'all', selectOnFocus : true, store : new Ext.data.SimpleStore({ fields : ['prefAreaFlag1'], data : [['未开通'], ['使用正式优惠区'], ['使用后备优惠区']] }) })) }, source : { "用户号码" : "", "业务状态" : "", "内部套餐号" : "", "优惠区提醒开关" : "", "非优惠区提醒开关" : "", "提醒方式" : "", "业务申请时间" : "", "业务开通时间" : "", "业务取消时间" : "", "最近一次提醒注册优惠区时间" : "", "是否启用后备优惠区域1" : "", "优惠区1的一天内注册次数" : "", "优惠区域1的最近一次定位时间" : "", "是否启用后备优惠区域2" : "", "优惠区2的一天内注册次数" : "", "优惠区域2的最近一次定位时间" : "", "是否启用后备优惠区域3" : "", "优惠区3的一天内注册次数" : "", "优惠区域3的最近一次定位时间" : "", "是否启用后备优惠区域4" : "", "优惠区4的一天内注册次数" : "", "优惠区域4的最近一次定位时间" : "" }, buttons : [{ text : '提交', handler : function() { var grid = Ext.getCmp("propGrid"); if (grid) { var source = grid.getSource(); var jsonDataStr = null; if (source) { jsonDataStr = Ext.encode(source); } if (jsonDataStr) { var mk = new Ext.LoadMask("propGrid", { msg : MSG_DATA_LOADING, removeMask : true }); mk.show(); var requestCg = { url : '../../../extend/mobilehome/editUserInfo.action', method : 'post', params : { jsonData : jsonDataStr }, timeout : 120000, callback : function(options, success, response) { // alert(success + "\t" + response); mk.hide(); mk.destroy(); if (!success) { Ext.MessageBox.show({ title : MSG_TITLE, msg : MSG_EXCEPTION, icon : Ext.MessageBox.ERROR, buttons : Ext.MessageBox.OK }); } else { if (response) { var infoData = Ext .decode(response.responseText); var msg = infoData.msg; var operateRslt = infoData.success; if (operateRslt && operateRslt != "true") { Ext.MessageBox.show({ title : MSG_TITLE, msg : msg, icon : Ext.MessageBox.ERROR, buttons : Ext.MessageBox.OK }); } else { Ext.MessageBox.show({ title : MSG_TITLE, msg : msg, icon : Ext.MessageBox.INFO, buttons : Ext.MessageBox.OK }); } } } } } Ext.Ajax.request(requestCg); } else { return false; } } } }, { text : this.resourceBundle.FieldLabel.RESET, handler : function() { Ext.getCmp("propGrid").getSource(); } }], buttonAlign : 'center' }); }; Ext.extend(cis.repository.smap.PropertyGridPanel, Ext.grid.PropertyGrid, {}); [/code] [b]问题补充:[/b] 第二个是setUseInfo.js文件。 [b]问题补充:[/b] 你本地测试的NAME所对应的 ,明显是居左么。 怎么没问题啊? [b]问题补充:[/b] 我的结果: [img]http://www.iteye.com/upload/attachment/141323/d3f5de22-b4bf-378d-bd16-50245bbbe79d.jpg[/img] [b]问题补充:[/b] 我加了.x-props-grid .x-grid3-col-name{ text-align:right; } 第一列内容还是居左的。 [b]问题补充:[/b] 好了 好了,谢谢你的帮助,很感谢。EXTJS还有很多不懂的地方,希望多多指教 。 [b]问题补充:[/b] 我能知道你的MSN吗,我的是itzhoujia@hotmail.com.
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
死磕YOLO系列,YOLOv1 的大脑、躯干和手脚
YOLO 是我非常喜欢的目标检测算法,堪称工业级的目标检测,能够达到实时的要求,它帮我解决了许多实际问题。 这就是 YOLO 的目标检测效果。它定位了图像中物体的位置,当然,也能预测物体的类别。 之前我有写博文介绍过它,但是每次重新读它的论文,我都有新的收获,为此我准备写一个系列的文章来详尽分析它。这是第一篇,从它的起始 YOLOv1 讲起。 YOLOv1 的论文地址:https://www.c
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
有一次面试的时候,被问到进程之间有哪些通信方式,不过由于之前没深入思考且整理过,说的并不好。想必大家也都知道进程有哪些通信方式,可是我猜很多人都是靠着”背“来记忆的,所以今天的这篇文章,讲给大家详细着讲解他们是如何通信的,让大家尽量能够理解他们之间的区别、优缺点等,这样的话,以后面试官让你举例子,你也能够顺手拈来。 1、管道 我们来看一条 Linux 的语句 netstat -tulnp | gr...
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片
网络(8)-HTTP、Socket、TCP、UDP的区别和联系
TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。 一、TCP与UDP的不同 1. 是否需要建立连接。 UDP在传送数据之前不需要先建立连接;TCP则提供面向连接的服务; 2. 是否需要给出确认 对方的传输层在收到UDP报文后,不需要给出任何确认,而 TCP需要给出确认报文,要提供可靠的、面向连接的传输服务。 3.虽然UDP不提供可靠交...
简明易理解的@SpringBootApplication注解源码解析(包含面试提问)
欢迎关注文章系列 ,关注我 《提升能力,涨薪可待》 《面试知识,工作可待》 《实战演练,拒绝996》 欢迎关注我博客,原创技术文章第一时间推出 也欢迎关注公 众 号【Ccww笔记】,同时推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 《提升能力,涨薪可待篇》- @SpringBootApplication注解源码解析 一、@SpringBootApplication 的作用是什
防劝退!数据结构和算法难理解?可视化动画带你轻松透彻理解!
大家好,我是 Rocky0429,一个连数据结构和算法都不会的蒟蒻… 学过数据结构和算法的都知道这玩意儿不好学,没学过的经常听到这样的说法还没学就觉得难,其实难吗?真难! 难在哪呢?当年我还是个小蒟蒻,初学数据结构和算法的时候,在忍着枯燥看完定义原理,之后想实现的时候,觉得它们的过程真的是七拐八绕,及其难受。 在简单的链表、栈和队列这些我还能靠着在草稿上写写画画理解过程,但是到了数论、图...
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给
开挂的人生!那些当选院士,又是ACM/IEEE 双料Fellow的华人学者们
昨日,2019年两院院士正式官宣,一时间抢占了各大媒体头条。 朋友圈也是一片沸腾,奔走相告,赶脚比自己中了大奖还嗨皮! 谁叫咱家导师就是这么厉害呢!!! 而就在最近,新一年度的IEEE/ACM Fellow也将正式公布。 作为学术届的顶级荣誉,不自然地就会将院士与Fellow作比较,到底哪个含金量更高呢? 学术君认为,同样是专业机构对学者的认可,考量标准不一,自然不能一概而论。 但...
聊聊C语言和指针的本质
坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。 很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是指针类型。 指针的作用就是,给出一个指针,取出该指针指向地址处的值。为了理解本质,我们从计算机模型说起...
Python语言高频重点汇总
Python语言高频重点汇总 GitHub面试宝典仓库——点这里跳转 文章目录Python语言高频重点汇总**GitHub面试宝典仓库——点这里跳转**1. 函数-传参2. 元类3. @staticmethod和@classmethod两个装饰器4. 类属性和实例属性5. Python的自省6. 列表、集合、字典推导式7. Python中单下划线和双下划线8. 格式化字符串中的%和format9.
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
代码详解:如何用Python快速制作美观、炫酷且有深度的图表
全文共12231字,预计学习时长35分钟生活阶梯(幸福指数)与人均GDP(金钱)正相关的正则图本文将探讨三种用Python可视化数据的不同方法。以可视化《2019年世界幸福报告》的数据为例,本文用Gapminder和Wikipedia的信息丰富了《世界幸福报告》数据,以探索新的数据关系和可视化方法。《世界幸福报告》试图回答世界范围内影响幸福的因素。报告根据对“坎特里尔阶梯问题”的回答来确定幸...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
(经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
今年正式步入了大四,离毕业也只剩半年多的时间,回想一下大学四年,感觉自己走了不少弯路,今天就来分享一下自己大学的学习经历,也希望其他人能不要走我走错的路。 (一)初进校园 刚进入大学的时候自己完全就相信了高中老师的话:“进入大学你们就轻松了”。因此在大一的时候自己学习的激情早就被抛地一干二净,每天不是在寝室里玩游戏就是出门游玩,不过好在自己大学时买的第一台笔记本性能并不是很好,也没让我彻底沉...
如何写一篇技术博客,谈谈我的看法
前言 只有光头才能变强。 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 我一直推崇学技术可以写技术博客去沉淀自己的知识,因为知识点实在是太多太多了,通过自己的博客可以帮助自己快速回顾自己学过的东西。 我最开始的时候也是只记笔记,认为自己能看得懂就好。但如果想验证自己是不是懂了,可以写成技术博客。在写技术博客的...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
互联网公司的裁员,能玩出多少种花样?
裁员,也是一门学问,可谓博大精深!以下,是互联网公司的裁员的多种方法:-正文开始-135岁+不予续签的理由:千禧一代网感更强。95后不予通过试用期的理由:已婚已育员工更有责任心。2通知接下来要过苦日子,让一部分不肯同甘共苦的员工自己走人,以“兄弟”和“非兄弟”来区别员工。3强制996。员工如果平衡不了工作和家庭,可在离婚或离职里二选一。4不布置任何工作,但下班前必须提交千字工作日报。5不给活干+...
【设计模式】单例模式的八种写法分析
网上泛滥流传单例模式的写法种类,有说7种的,也有说6种的,当然也不排除说5种的,他们说的有错吗?其实没有对与错,刨根问底,写法终究是写法,其本质精髓大体一致!因此完全没必要去追究写法的多少,有这个时间还不如跟着宜春去网吧偷耳机、去田里抓青蛙得了,一天天的....
《面试宝典》:检验是否为合格的初中级程序员的面试知识点,你都知道了吗?查漏补缺
欢迎关注文章系列,一起学习 《提升能力,涨薪可待篇》 《面试知识,工作可待篇》 《实战演练,拒绝996篇》 也欢迎关注公 众 号【Ccww笔记】,原创技术文章第一时间推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 《面试知识,工作可待篇》-Java笔试面试基础知识大全 前言 是不是感觉找工作面试是那么难呢? 在找工作面试应在学习的基础进行总结面试知识点,工作也指日可待,欢...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
微博推荐算法简述
在介绍微博推荐算法之前,我们先聊一聊推荐系统和推荐算法。有这样一些问题:推荐系统适用哪些场景?用来解决什么问题、具有怎样的价值?效果如何衡量? 推荐系统诞生很早,但真正被大家所重视,缘起于以”facebook”为代表的社会化网络的兴起和以“淘宝“为代表的电商的繁荣,”选择“的时代已经来临,信息和物品的极大丰富,让用户如浩瀚宇宙中的小点,无所适从。推荐系统迎来爆发的机会,变得离用户更近: 快...
GitHub 标星 1.6w+,我发现了一个宝藏项目,作为编程新手有福了!
大家好,我是 Rocky0429,一个最近老在 GitHub 上闲逛的蒟蒻… 特别惭愧的是,虽然我很早就知道 GitHub,但是学会逛 GitHub 的时间特别晚。当时一方面是因为菜,看着这种全是英文的东西难受,不知道该怎么去玩,另一方面是一直在搞 ACM,没有做一些工程类的项目,所以想当然的以为和 GitHub 也没什么关系(当然这种想法是错误的)。 后来自己花了一个星期看完了 Pyt...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
恕我直言,牛逼哄哄的MongoDB你可能只会30%
MongoDB 闪亮登场自我介绍MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于...
相关热词 c#开发的dll注册 c#的反射 c# grid绑定数据源 c#多线程怎么循环 c# 鼠标左键 c# char占位符 c# 日期比较 c#16进制转换为int c#用递归求顺序表中最大 c#小型erp源代码
立即提问