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);

















posted on 2007-02-06 15:54 -274°C 阅读(1445) 评论(1)  编辑  收藏 所属分类: JAVA


FeedBack:
# re: SWING之一句话经验(不断补充中)
2007-03-07 09:53 | lubaolin
经验所得,难能可贵
我得转载一下  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 

常用链接

留言簿(21)

随笔分类(265)

随笔档案(242)

相册

JAVA网站

关注的Blog

搜索

  •  

积分与排名

  • 积分 - 873213
  • 排名 - 37

最新评论