`

java swing常用代码片段

阅读更多

Java swing 常用代码片段:

(1)复制全部

JButton copyAll=new JButton("复制全部");
		    copyAll.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					String content=area2.getText();
					if(ValueWidget.isNullOrEmpty(content)){
						return;
					}
					WindowUtil.setSysClipboardText(content);
				}
			});
public static void setSysClipboardText(String writeMe)
    {
        Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
        Transferable tText = new StringSelection(writeMe);
        clip.setContents(tText, null);
    }

 

获取一个"复制"按钮

/***
	 * Get a copy button.
	 * 
	 * @param tf
	 * @return
	 */
	public static JButton getCopyBtn(final JTextComponent ta) {
		JButton copyBtn = new JButton(MenuUtil2.ACTION_STR_COPY);
		copyBtn.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				if(ValueWidget.isNullOrEmpty(ta)){
					ToastMessage toastMessage = new ToastMessage("文本框为null,请确认文本框是否已经创建",3000,Color.red);
		            toastMessage.setVisible(true);
				}else{
					String input = ta.getText();
					if (!ValueWidget.isNullOrEmpty(input)) {
						WindowUtil.setSysClipboardText(input);
					}
				}
			}
		});
		return copyBtn;
	}

 

 

(2)黏贴

btnPasteAfterDel.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					String content = WindowUtil.getSysClipboardText();
					if (ValueWidget.isNullOrEmpty(content)) {
						return;
					}
					getTextArea().setText(content);
				}
			});

 获取一个黏贴按钮:

/***
	 * Get a paste button.
	 * 
	 * @param ta
	 * @return
	 */
	public static JButton getPasteBtn(final JTextComponent ta) {
		JButton copyBtn = new JButton(MenuUtil2.ACTION_STR_PASTE);
		copyBtn.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				String input = WindowUtil.getSysClipboardText();
				if (!ValueWidget.isNullOrEmpty(input)) {
					ta.setText(input);
				}
			}
		});
		return copyBtn;
	}

 

 

(3)给JTextArea 增加快捷键

		 final JTextArea ta=getTextArea();
		 KeyListener[] keyListeners=ta.getKeyListeners();
		 ta.addKeyListener(new KeyAdapter() {
				private long lastTimeMillSencond;
				private long lastTimeMillSencondCtrl;
				private long lastTimeMillSencondEsc;
				
				@Override
				public void keyPressed(KeyEvent e) {
					if(e.getKeyCode() == KeyEvent.VK_A/*全选*/
							||e.getKeyCode() == KeyEvent.VK_C/* 复制 */
							||e.getKeyCode() == KeyEvent.VK_F/*格式化*/
							||e.getKeyCode() == KeyEvent.VK_Z/*剪切*/
							||e.getKeyCode() == KeyEvent.VK_V){
//						System.out.println(e.getKeyCode());
						lastTimeMillSencondCtrl=0;
					}
					if(e.isShiftDown()){
						if(lastTimeMillSencond==0){
							lastTimeMillSencond=System.currentTimeMillis();
						}else{
							long currentTime=System.currentTimeMillis();
							long delta=currentTime-lastTimeMillSencond;
							if(MenuUtil2.isDoubleClick(delta)){
//									System.out.println("双击Shift");
								lastTimeMillSencond=0;
								String selectContent = ta.getSelectedText();
								if(ValueWidget.isNullOrEmpty(selectContent)){
									return;
								}
								selectContent=SystemHWUtil.deleteQuotes(selectContent);
								ta.replaceSelection(selectContent);
							}else{
								lastTimeMillSencond=System.currentTimeMillis();
							}
						}
					}else if(e.isControlDown()&&(e.getKeyCode() != KeyEvent.VK_V/*86 */&&e.getKeyCode() != KeyEvent.VK_Z/*90*/
							&&e.getKeyCode() != KeyEvent.VK_C/*67*/&&e.getKeyCode() != KeyEvent.VK_A/*65*/)){//双击Ctrl
//						System.out.println(e.getKeyCode());
//						System.out.println("lastTimeMillSencondCtrl:"+lastTimeMillSencondCtrl);
						if(lastTimeMillSencondCtrl==0){
							lastTimeMillSencondCtrl=System.currentTimeMillis();
						}else{
							long currentTime=System.currentTimeMillis();
							long delta=currentTime-lastTimeMillSencondCtrl;
//							System.out.println(lastTimeMillSencondCtrl+" "+currentTime+" "+delta);
							if(MenuUtil2.isDoubleClick(delta)){
								System.out.println("双击Ctrl");
								lastTimeMillSencondCtrl=0;
								String selectContent = ta.getSelectedText();
								if(ValueWidget.isNullOrEmpty(selectContent)){
									return;
								}
								quotesEscape(ta,false);
							}else{
								lastTimeMillSencondCtrl=System.currentTimeMillis();
							}
						}
					}else if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
						if(lastTimeMillSencondEsc==0){
							lastTimeMillSencondEsc=System.currentTimeMillis();
						}else{
							long currentTime=System.currentTimeMillis();
							if(MenuUtil2.isDoubleClick(currentTime-lastTimeMillSencondEsc)){
//									System.out.println("双击Esc");
								lastTimeMillSencondEsc=0;
								String content = ta.getText();
								if(ValueWidget.isNullOrEmpty(content)){
									return;
								}
								boolean isEditable=ta.isEditable();
								ta.setEditable(!isEditable);
							}else{
								lastTimeMillSencondEsc=System.currentTimeMillis();
							}
						}
					}
					
				}
			});
		 ta.requestFocus();
	 

 MenuUtil2.isDoubleClick 实现如下:

 /***
     * 通过时间间隔来判断是否是双击(不是鼠标,是键盘)
     * @param delta
     * @return
     */
    public static boolean isDoubleClick(long delta){
    	return (delta<300&&delta>100);
    }

 

 

(4)使JTextArea 自动换行

 resultTextPane = new AssistPopupTextArea();
        resultTextPane.setLineWrap(true);
        resultTextPane.setWrapStyleWord(true);

 

 

(5)设置表格数据

private void setTableData2(Object[][] datas) {
        DefaultTableModel model = new DefaultTableModel(datas, columnNames);
        parameterTable_1.setModel(model);
        this.parameterTable_1.setRowHeight(30);
        rendTable();
    }

 

 

(6)获取表格的数据

/***
     * 获取表格中的请求要素
     *
     * @return
     */
    protected Object[][] getParameter4Table(){
    	TableModel model= parameterTable_1.getModel();
        int rowCount = model.getRowCount();//参数的个数
        int columnCount=model.getColumnCount();
        Object[][] data2 = new Object[rowCount][];
        for (int rowIndex = 0; rowIndex< rowCount; rowIndex++) {
            if (!ValueWidget.isNullOrEmpty(model.getValueAt(rowIndex, 0))) {
                Object[] objs = new Object[columnCount];
                for (int j = 0; j < columnCount; j++) {
                    Object val = model.getValueAt(rowIndex, j);
                    if (!ValueWidget.isNullOrEmpty(val)) {
                        objs[j] = val;
                    }
                }
                data2[rowIndex] = objs;
            }


        }
    	System.out.println(data2.length);
    	return data2;
    }

 

 

(7)获取组件对话框中的数据

String newName = JOptionPane.showInputDialog(ta.getParent()/*应该是JFrame*/,
					"请输入图片高度:", ta.getHeight());
			if (newName != null)
			{
				if (newName.equals("")) {
					ToastMessage toastMessage = new ToastMessage("file name can not be empty.",3000,Color.red);
		            toastMessage.setVisible(true);
					return;
				}
				specifiedHeight=Integer.parseInt(newName);
				
			}else{/* indicate [cancel] button has been clicked */
				ToastMessage toastMessage = new ToastMessage("已取消",2000,Color.red);
		        toastMessage.setVisible(true);
				return;
			}

 (8)一个简单的模态窗口(对话框)

package com.yunma.dialog;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;

import com.common.util.SystemHWUtil;
import com.string.widget.util.ValueWidget;
import com.swing.component.AssistPopupTextArea;
import com.swing.component.AssistPopupTextField;
import com.swing.component.ComponentUtil;
import com.swing.dialog.GenericDialog;

public class GenerateMD5Dialog extends GenericDialog {

	private static final long serialVersionUID = -4151740071609032069L;
	private JPanel contentPane;
	private AssistPopupTextField sourceTxt;
	private JComboBox<String> encodingComboBox;
	private AssistPopupTextArea resultTextArea;

	/**
	 * Launch the application.
	 *//*
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					GenerateMD5Dialog frame = new GenerateMD5Dialog();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}*/

	/**
	 * Create the frame.
	 */
	public GenerateMD5Dialog(boolean modal) {
		setTitle("生成MD5值");
		setModal(modal);
		setLoc(450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		GridBagLayout gbl_contentPane = new GridBagLayout();
		gbl_contentPane.columnWidths = new int[]{0, 0, 0, 0};
		gbl_contentPane.rowHeights = new int[]{0, 0, 0, 0, 0};
		gbl_contentPane.columnWeights = new double[]{0.0, 0.0, 1.0, Double.MIN_VALUE};
		gbl_contentPane.rowWeights = new double[]{0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE};
		contentPane.setLayout(gbl_contentPane);
		
		JLabel label = new JLabel("原文本");
		GridBagConstraints gbc_label = new GridBagConstraints();
		gbc_label.insets = new Insets(0, 0, 5, 5);
		gbc_label.gridx = 0;
		gbc_label.gridy = 0;
		contentPane.add(label, gbc_label);
		
		sourceTxt = new AssistPopupTextField();
		GridBagConstraints gbc_sourceTxt = new GridBagConstraints();
		gbc_sourceTxt.insets = new Insets(0, 0, 5, 0);
		gbc_sourceTxt.fill = GridBagConstraints.HORIZONTAL;
		gbc_sourceTxt.gridx = 2;
		gbc_sourceTxt.gridy = 0;
		contentPane.add(sourceTxt, gbc_sourceTxt);
		sourceTxt.setColumns(10);
		
		JLabel label_1 = new JLabel("文件编码");
		GridBagConstraints gbc_label_1 = new GridBagConstraints();
		gbc_label_1.insets = new Insets(0, 0, 5, 5);
		gbc_label_1.gridx = 0;
		gbc_label_1.gridy = 1;
		contentPane.add(label_1, gbc_label_1);
		
		encodingComboBox = new JComboBox<String>();
		GridBagConstraints gbc_encodingComboBox = new GridBagConstraints();
		gbc_encodingComboBox.insets = new Insets(0, 0, 5, 0);
		gbc_encodingComboBox.fill = GridBagConstraints.HORIZONTAL;
		gbc_encodingComboBox.gridx = 2;
		gbc_encodingComboBox.gridy = 1;
		contentPane.add(encodingComboBox, gbc_encodingComboBox);
		//文件的编码,window里面一般是GBK,linux中一般是UTF-8
		encodingComboBox.addItem(SystemHWUtil.EMPTY);
		encodingComboBox.addItem(SystemHWUtil.CHARSET_UTF);
		encodingComboBox.addItem(SystemHWUtil.CHARSET_GBK);
		encodingComboBox.addItem(SystemHWUtil.CHARSET_GB2312);
		encodingComboBox.addItem(SystemHWUtil.CHARSET_ISO88591);
		//设置默认选中的项
		encodingComboBox.setSelectedIndex(0);
		
		JPanel panel = new JPanel();
		GridBagConstraints gbc_panel = new GridBagConstraints();
		gbc_panel.insets = new Insets(0, 0, 5, 0);
		gbc_panel.gridwidth = 3;
		gbc_panel.fill = GridBagConstraints.BOTH;
		gbc_panel.gridx = 0;
		gbc_panel.gridy = 2;
		contentPane.add(panel, gbc_panel);
		
		JButton generateMDbutton = new JButton("生成");
		generateMDbutton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String inputText=sourceTxt.getText();
				String charset=getSelectedItem4ComboBox(encodingComboBox);
				if(ValueWidget.isNullOrEmpty(charset)){
					charset=SystemHWUtil.CURR_ENCODING;
				}
				try {
					String md5 = SystemHWUtil.getMD5(inputText,charset);
					resultTextArea.setText(md5);
				} catch (NoSuchAlgorithmException e1) {
					e1.printStackTrace();
				} catch (UnsupportedEncodingException e1) {
					e1.printStackTrace();
				}
				
			}
		});
		panel.add(generateMDbutton);
		resultTextArea = new AssistPopupTextArea();
		JButton btnCopy = ComponentUtil.getCopyBtn(resultTextArea);
		panel.add(btnCopy);
		
		JScrollPane scrollPane = new JScrollPane();
		GridBagConstraints gbc_scrollPane = new GridBagConstraints();
		gbc_scrollPane.gridwidth = 3;
		gbc_scrollPane.fill = GridBagConstraints.BOTH;
		gbc_scrollPane.gridx = 0;
		gbc_scrollPane.gridy = 3;
		contentPane.add(scrollPane, gbc_scrollPane);

		//结果文本域
		
		resultTextArea.setLineWrap(true);
		resultTextArea.setWrapStyleWord(true);
		resultTextArea.setEditable(false);
		scrollPane.setViewportView(resultTextArea);
	}

}

 调用:

if (command.equals(MenuUtil2.ACTION_CREATE_MD5)) {
			GenerateMD5Dialog generateMD5Dialog=new GenerateMD5Dialog(true/*是否是模态*/);
			generateMD5Dialog.setVisible(true);
		}

 

 

(9)弹出选择文件对话框

private void chooseDestFile(JTextArea ta,String picFormat){
		JFileChooser chooser = new JFileChooser();
        chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        File selectedFile=new File("C:\\Users\\Administrator\\Pictures\\"+TimeHWUtil.formatDate(new Date(), "yyyyMM"));
        //home目录应该动态获取
        if(!ValueWidget.isNullOrEmpty(selectedFile)){
        	chooser.setSelectedFile(selectedFile);
        }
        chooser.setName("二维码."+picFormat);
        FileNameExtensionFilter filter = new FileNameExtensionFilter(
                "picture Files", picFormat, "二维码");
            chooser.setFileFilter(filter);
        chooser.setDialogType(JFileChooser.SAVE_DIALOG);
        chooser.setControlButtonsAreShown(true);
        chooser.setDialogTitle("保存二维码");
        //            chooser.setVisible(true);
        int result = chooser.showSaveDialog(ta);
        System.out.println("New file:" + result);
        if (result == JOptionPane.OK_OPTION)
        {
            selectedFile = chooser.getSelectedFile();
            if(! SystemHWUtil.isHasSuffix(selectedFile)){
            	selectedFile=new File(selectedFile.getAbsolutePath()+ SystemHWUtil.ENGLISH_PERIOD+picFormat);
            }
            ImageHWUtil.genericImage(ta, selectedFile, picFormat);
            System.out.println("select file:" + selectedFile);
        }
	}

 

 

(10)在表格上增加菜单

private MouseInputListener getMouseInputListener(final JTable jTable) {
        return new MouseInputListener() {
            public void mouseClicked(MouseEvent e) {
                processEvent(e);
            }

            /***
             * //in order to trigger Left-click the event
             */
            public void mousePressed(MouseEvent e) {
                processEvent(e);// is necessary!!!
            }

            public void mouseReleased(MouseEvent e) {
                // processEvent(e);


                if (e.getButton() == MouseEvent.BUTTON3) {// right click

                    JPopupMenu popupmenu = new JPopupMenu();
                    JMenuItem runM = new JMenuItem(ACTION_COMMAND_RUN);
                    JMenuItem copyParameterM = new JMenuItem(ACTION_COMMAND_COPY_REQUEST_PARAMETER);
                    JMenuItem copyResponseM = new JMenuItem(ACTION_COMMAND_COPY_RESPONSE);
                    JMenuItem cleanResultM = new JMenuItem("清空结果");
                    // JMenuItem editM=new JMenuItem("edit");
                    MyMenuActionListener yMenuActionListener = new MyMenuActionListener();
                    runM.addActionListener(yMenuActionListener);
                    copyParameterM.addActionListener(yMenuActionListener);
                    copyResponseM.addActionListener(yMenuActionListener);
                    cleanResultM.addActionListener(yMenuActionListener);
                    popupmenu.add(runM);
                    popupmenu.add(copyParameterM);
                    popupmenu.add(copyResponseM);
                    popupmenu.add(cleanResultM);
                    popupmenu.show(e.getComponent(), e.getX(), e.getY());
                }
            }

            public void mouseEntered(MouseEvent e) {
                processEvent(e);
            }

            public void mouseExited(MouseEvent e) {
                processEvent(e);
            }

            public void mouseDragged(MouseEvent e) {
                processEvent(e);
            }

            public void mouseMoved(MouseEvent e) {
                processEvent(e);
            }

            private void processEvent(MouseEvent e) {
                // Right-click on
                if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) {
                    // System.out.println(e.getModifiers());
                    // System.out.println("Right-click on");
                    int modifiers = e.getModifiers();
                    modifiers -= MouseEvent.BUTTON3_MASK;
                    modifiers |= MouseEvent.BUTTON1_MASK;
                    MouseEvent ne = new MouseEvent(e.getComponent(), e.getID(),
                            e.getWhen(), modifiers, e.getX(), e.getY(),
                            e.getClickCount(), false);
                    jTable.dispatchEvent(ne);// in order to trigger Left-click
                    // the event
                }
            }
        };
    }

 调用:

private void rendTable(){
    	parameterTable_1.getColumnModel().getColumn(2)
		.setCellEditor(new MyButtonEditor());
    	parameterTable_1.getColumnModel().getColumn(2)
		.setCellRenderer(new MyButtonRender());
        final MouseInputListener mouseInputListener = getMouseInputListener(parameterTable_1);//
        parameterTable_1.addMouseListener(mouseInputListener);
    }

 参考:

http://hw1287789687.iteye.com/blog/2230780

http://hw1287789687.iteye.com/blog/2227989

http://hw1287789687.iteye.com/blog/2173977

http://hw1287789687.iteye.com/blog/2003105

 

0
1
分享到:
评论

相关推荐

    利用Swing开发的JAVA常用组件代码

    本资源"利用Swing开发的JAVA常用组件代码fprod-common-7.3.rar"提供了使用Swing开发的一些常见组件的示例代码,这将有助于理解和实践如何在Java程序中创建和操作用户界面。 Swing提供了许多组件,它们是构建用户...

    javaswing代码

    以上内容为我们从提供的代码片段中提取出的主要知识点。通过对这些知识点的学习和掌握,开发者可以更好地利用Java Swing框架来构建功能丰富的桌面应用。此外,Swing还提供了很多其他高级特性,如表格数据处理、图像...

    java实验报告———JavaSwing编程.pdf

    标题中提到的“JavaSwing编程”,指的是在Java编程语言中,使用Swing库进行图形用户界面(GUI)编程的一种实践。Swing是Java的一个工具包,用于开发Java应用程序的图形用户界面。它提供了一套丰富的组件,可以让...

    Java开发常用代码全集.zip

    这个"Java开发常用代码全集.zip"压缩包显然包含了Java编程中常用的代码片段和示例,对于初学者和经验丰富的开发者来说都是一个宝贵的资源。让我们深入探讨一下这个资源可能涵盖的一些关键知识点。 1. **基础语法**...

    Java收集的代码段1(待续)常用代码段

    在Java编程中,窗口风格、窗口居中、组件拖动、文件路径处理和设置...对于"Java收集的代码段1(待续)常用代码段"这个主题,后续可能还会涉及到更多高级特性和实践技巧,持续学习和实践是提升Java GUI编程能力的关键。

    Java常用代码大全.zip

    "Java常用代码大全.zip"这个压缩包很可能包含了各种常见的Java编程示例和实用代码片段,帮助开发者快速解决日常开发中遇到的问题。这个文档,"Java常用代码大全.doc",可能是一个详细的指南,涵盖了Java开发中的各种...

    100多个非常有用的java功能代码

    在Java编程语言中,开发者经常会遇到各种各样的问题,而解决这些问题往往需要高效且实用的代码片段。"100多个非常有用的Java功能代码"集合就是这样一个资源库,它包含了大量经过验证、优化的代码示例,可以帮助...

    课程设计 java记事本 java代码注释

    虽然代码片段并不完整,但从已有的部分可以看出它具有良好的可扩展性和可维护性。对于初学者来说,这是一个很好的学习Swing GUI编程的例子。通过阅读和理解这个程序,可以进一步掌握Swing组件的使用方法以及如何处理...

    很实用的java常用代码

    "很实用的Java常用代码"这个压缩包文件显然包含了大量在日常开发中经常用到的代码片段,旨在帮助开发者提高效率,解决常见问题。下面,我们将详细探讨一些Java编程中的关键知识点。 1. 类与对象:Java是面向对象的...

    javaSwing编程

    - **示例代码片段:** ```java import javax.swing.*; public class SimpleSwingApp { public static void main(String[] args) { SwingUtilities.invokeLater(() -&gt; { createAndShowGUI(); }); } private...

    一个java编写的计算器程序源代码(txt)

    从给定的文件信息中,我们可以提取到关于Java编程语言中...综上所述,这段Java代码片段不仅展示了如何使用Swing库构建GUI,还涉及了事件处理和数学计算的基本原理,是学习Java图形界面编程和计算器应用开发的宝贵资源。

    java时钟源代码

    虽然代码片段中没有具体的实现,但是根据文件描述中的信息,我们可以推测程序中可能有加载背景图片的功能。这可以通过Swing中的`JLabel`或`JPanel`来实现,并使用`setIcon`方法来设置图片。 ### 总结 这个Java时钟...

    java常用词

    - **Copy**:复制选定的文件或代码片段。 - **Paste**:粘贴之前复制的内容。 - **Delete**:删除选定的文件或代码。 - **Properties**:查看和修改项目的属性设置。 ### Java 构建路径与库管理 - **Java Build ...

    java实用教程(第三版)第八章课后习题答案(耿祥义)

    **代码片段**: ```java public class Application { public static void main(String[] args) { new MyFrame("对话框实践"); } } ``` **知识点**: - **主类**: `Application` 是程序的入口点。 - **主方法**: ...

    Java经典代码

    ### Java经典代码知识点详解 #### 一、概述 在IT领域中,Java作为一种广泛使用的编程语言,其丰富的类库和强大的功能支持了多种应用场景。...希望本文能够帮助读者更好地理解和运用Java的经典代码片段。

    2011最新整理java经典代码.zip

    文件 "2011最新整理java经典代码.doc" 可能是一个Microsoft Word文档,里面包含了精心编排的Java代码片段和相关的解释说明。 在Java编程中,经典代码通常涉及以下几个核心概念: 1. **基础语法**:包括数据类型...

    java 创建普通窗口

    在本例中,我们将通过分析提供的代码片段来了解以下知识点: 1. **Swing的基本概念** 2. **使用`JFrame`创建窗口** 3. **设置窗口属性** 4. **使用线程执行GUI操作** 5. **监听器与事件处理** #### Swing 基本概念...

    java写的通讯录.pdf

    由于文件内容中的一些代码片段被截断了,并且存在OCR识别错误,完整的实现逻辑和细节无法完全展现。然而,上述知识点提供了文档中Java Swing通讯录应用程序开发的核心内容。开发者通过这些知识点,可以构建和理解...

    Java灵感设计范例源代码

    "源码"标签明确指出我们将看到的是可读的、可学习的代码片段,这对于初学者和经验丰富的开发者来说都是宝贵的教育资源。通过阅读和理解这些代码,开发者可以提升自己的编程技巧,学习如何写出更优雅、更高效的Java...

Global site tag (gtag.js) - Google Analytics