• Swing 经验总结


     

    1. JFrame对象一般可以直接向里面添加数据,但是在设置背景颜色时得用:Container f = new JFrame(“test”).getContentPane();

    2. pack()是设置窗体大小自适应其内组件,setSize()为设置其显示的大小。

    3. 默认关闭窗体JFrame时,是隐藏。要想真退出。请加入setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JFrame.EXIT_ON_CLOSE是一整形常量,值为3。

    4. 加载GIF图片:
    MediaTracker tracker = new MediaTracker(this);
    Image img = new ImageIcon (getClass().getResource(“test.gif”)).getImage():
    Tracker.addImage(img,0):
    try{
    tracker.waitForAll();
    }catch(Exception e)
    {}
    此后就可以对完整的gif进行操作了。

    5. 光标移动到组件上给出提示:setToolTipText(”this is tip”);

    6. JScrollPane可以通过setVerticalScrollBarPolicy(int policy)
    和setHorizontalScrollBarPolicy(int policy)来选择是否显示滚动条。

    7.弹出消息框:JOptionPane.showMessageDialog(btn,new String (“test”));
    弹出错误提示:JOptionPane.showMessageDialog(null,"错误信息","错误框标题",JOptionPane.ERROR_MESSAGE);

    8. 文本输入框右对齐:SetHorizontalAlignment(JTextField.RIGHT);

    9. 读取JAR包内资源,应该使用:getClass().getResource();

    10. 容器布局为空后——setLayout(null),其内组件应setBounds();

    11.内存回收:if(Runtime.getRuntime().freeMemory()<Runtime.getRuntime().totalMemory()/3)
    {
    System.gc();
    }

    12. JFrame 窗口不可最大化:setResizable(false);

    13. 应用程序和applet小程序共存:直接把applet往jframe里面加就成应用程序。

    14. 让窗口居中(屏幕)显示:setLocationRelativeTo(null):
    或者用:
    Toolkit kit = Toolkit.getDefaultToolkit():
    Dimension screenSize = kit.getScreenSize();
    f.setLocation((screenSize.Width-f.getWidth())/2, (screenSize.Height-f.getHeight())/2);

    15. 选择皮肤感官:
    try{
    UIManager.setLookAndFeel ( "com.sun.java.swing.plaf.motif.MotifLookAndFeel");
                SwingUtilities.updateComponentTreeUI(f);
    }

    16. 密码框可设setEchoChar(‘#’);或者密码时 pwd = new String(password.getPassword());

    17. 用JlayeredPane添加组件时候可以设置深度。

    18. 区别单双击事件:
    if(e.getClickCount ==1)
    {}else if(e.getClickCount ==2){}

    19. JAVA2D 中设置虚线:
    float [] dash = {2.0f,4.0f};
    g2.setStroke(
    new BasicStroke(2.0f, BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL,2.0f,dash,2.0f));

    20. JAVA2D 中设置字体笔画大小:
    Font cf = g.getFont();
    Font newf = new Font(cf.getName(),cf.getStyle(),cf.getSize()+20);
    g.setFont(newf);

    21.让树无图标标签
    ((DefaultTreeCellRenderer)tree.getCellRenderer()).setOpenIcon(null);
    ((DefaultTreeCellRenderer)tree.getCellRenderer()).setClosedIcon(null);
    ((DefaultTreeCellRenderer)tree.getCellRenderer()).setDisabledIcon(null);
    ((DefaultTreeCellRenderer)tree.getCellRenderer()).setLeafIcon(null);

    22.竖着显示滑块
    new JSlider(SwingConstants.VERTICAL,min,max,initialValue);

    23.通过标尺显示滑块
    slider.setMajorTickSpacing(20);
    slider.setPaintTicks(true);
    slider.setPaintLabels(true);

    24.让滑块自动对齐到标尺
    slider.setSnapToTicks(true);

    25.滑块事件
    addChangeListener
    ChangeListener -> stateChanged(ChangeEvent event)

    26.滑块标尺特殊化
    HashtMap map = new HashMap();
    map.put(new Integer(0),new JLabel("A"));
    slider.setLabel(map);

    27.多选单选按钮
    JCheckBox 和 JRadioButton 其中单选放入ButtonGroup对象中。
    判断是否选中:isSelected()
    获取标签用:getText();
    事件:ItemListener
    方法:itemStateChanged(ItemEvent event)

    28.让树一开始就全部展开
    expandAll(tree,new TreePath(tree.getModel().getRoot()));
    其中有:
    public void expandAll (JTree tree,TreePath path)
    {
        tree.expandPath(path);
        Obect parent = path.getLastPathComponent();
        TreeModel model = tree.getModel()
        if(model ==null)return;
        if(model.isLeaf(parent)) return;
        int size = model.getChildCount(parent);
        for(int i = 0 ;i<size;i++)
        {
            Object child = model.getChild(parent,i);
            expandAll(tree,path.pathByAddingChild(child));
        }
    }

    29.树节点匹配:
    TreePath path = tree.getNextMatch(str,0,Positon.Bias.Forward);
    if(path !=null)
    {
        tree.setSelectionPath(path);
    }

    30.获取树节点

    TreeSelectionListener->valueChanged(TreeSelectionEvent e)
    TreePath path = e.getPath();
    String info = path.getLastPathComponent().toString();
    而这里获取到是最后那个选择节点,如成都。
    JTree tree = (JTree)e.getSource();
    TreePath tp= tree.getPathForLorLocation(e.getPoint().x,e.getPoint().y);
    这个PATH是完整的节点名,比如:四川,成都

    31.截屏程序核心:
    BufferedImage fullScreenImage = robot.createScreenCapture (new Rectangle (
                    Toolkit.getDefaultToolkit ().getScreenSize ()));
            ImageIcon icon = new ImageIcon (fullScreenImage);
    利用 fullScreenImage.getSubimage(int x,int y,int w,int h)得到子图象(其中的矩形范围是鼠标拖动事件而得到)
    ImageIO.write (fullScreenImage.getSubimage(int x,int y,int w,int h),"png","out.png");

    界面上:
       1.继承JLabel 覆盖起paint方法;
       2.JPanel 从(JPanel)Dialog.getContentPane()来,JLabel 添加进JPanel;
       3.Dialog设置为屏幕大小、不显示边框等饰物dialog.setUndecorated (true);(JFrame中其实也有这个方法。)
       4.设置十字光标,dialog.setCursor (Cursor.getPredefinedCursor (Cursor.CROSSHAIR_CURSOR));
       5.设置为模态 dialog.setModal (true);
  • 相关阅读:
    解析python数据后用html输出
    python 自动化测试HTTP接口
    python 自动化对比返回结果
    Java 基础知识 练习
    Java 菜鸟学习之 script脚本语句
    java语言的认识
    Script 语言的简单练习题 乘法口诀
    Script 简单语句的练习题
    Java菜鸟培训第二天
    36个号码随机摇奖编码
  • 原文地址:https://www.cnblogs.com/zollty/p/2879276.html
Copyright © 2020-2023  润新知