今日体会之JTabbedPane的使用和JFrame的透明化方法
来源:互联网 发布:php构造函数的作用 编辑:程序博客网 时间:2024/06/01 10:47
JTabbedPane总的来说还是很好用的,分区显示是特色,但是我要更新数据就让我蛋疼了
结果还是一样,无限死循环,现在想起来才觉得自己好傻,怎么会这样做。
结果没有进入死循环,还好,解决了一小步了,这也证明了我的猜想,API上面只说状态改变却没告诉我什么叫状态改变。我也理解了为什么第一次测试的时候会输出3个数字了,我第一次是用的下面的代码:
因为我加了4个tab所以会有这种结果。现在知道了,changeListener里面不能直接改变tabbedPane的“状态”
如果要还可以选择背景后面的其他东西可以设置背景色new Color(255,255,255,0);
首先他有个addChangeListener方法,开始试了一下是在selectedIndex改变时会调用,然后我就兴致勃勃的写了
tabbedPane.addChangeListener(new ChangeListener() {@Overridepublic void stateChanged(ChangeEvent e) {if(tabbedPane.getSelectedIndex()==1){//省略中间无关代码tabbedPane.remove(1);tabbedPane.insertTab(*,*,*,*,1);}}});
不过我猜想是因为selectedIndex改变了,所以我傻傻的写了下面的代码
tabbedPane.addChangeListener(new ChangeListener() {@Overridepublic void stateChanged(ChangeEvent e) {if(tabbedPane.getSelectedIndex()==1){//省略中间无关代码tabbedPane.setSelectedIndex(-1);tabbedPane.remove(1);tabbedPane.setSelectedIndex(-1);tabbedPane.insertTab(*,*,*,*,1);tabbedPane.setSelectedIndex(-1);}}});
结果还是一样,无限死循环,现在想起来才觉得自己好傻,怎么会这样做。
所以我想到了是不是这个Listener的问题。于是乎,我就这样做
tabbedPane.addChangeListener(new ChangeListener() {@Overridepublic void stateChanged(ChangeEvent e) {if(tabbedPane.getSelectedIndex()==1){//省略中间无关代码tabbedPane.removeChangeListener(this);tabbedPane.remove(1);tabbedPane.insertTab(*,*,*,*,1);tabbedPane.addChangeListener(this);}}});
结果没有进入死循环,还好,解决了一小步了,这也证明了我的猜想,API上面只说状态改变却没告诉我什么叫状态改变。我也理解了为什么第一次测试的时候会输出3个数字了,我第一次是用的下面的代码:
tabbedPane.addChangeListener(new ChangeListener() {@Overridepublic void stateChanged(ChangeEvent e) {if(tabbedPane.getSelectedIndex()==1){//省略中间无关代码System.out,println("1");tabbedPane.remove(1);tabbedPane.insertTab(*,*,*,*,1);}}});
因为我加了4个tab所以会有这种结果。现在知道了,changeListener里面不能直接改变tabbedPane的“状态”
再者我又另辟蹊径,找到了另外一种方法,解决了tabbedPane刷新的方法,不是tabbedPane。repaint();而是tabbedPane.setComponentAt(1, picturePanel);
这个方法才实现了真正意义上的刷新,把整个界面都刷了。很好用
第二篇章:透明的JFrame。
这个方法我也在网上找了好久,什么setOpaque(),什么用sun.com.swt里面的AWTUtilities我试过了都没有我想要的结果
真正帮我实现的是我的一位同学
具体代码如下,其实就是设置背景色new Color(255,255,255,1);
JFrame frame = new JFrame();frame.setUndecorated(true);frame.setBackground(new Color(255,255,255,1));frame.getContentPane().setLayout(null);frame.setSize(WIDTH,HEIGHT);frame.setVisible(true);
如果要还可以选择背景后面的其他东西可以设置背景色new Color(255,255,255,0);
活到老,学到老,继续,我要写完我的新手引导界面,哈哈哈哈
- 今日体会之JTabbedPane的使用和JFrame的透明化方法
- JTabbedPane的使用
- JTabbedPane的使用
- JTabbedPane的使用
- JTabbedPane的使用
- JTabbedPane,JScroolPane,JScrolBa的使用
- JTabbedPane,JScroolPane,JScrolBa的使用
- JTabbedPane的几个常用的方法
- 设置JFrame的背景图片,实现Jtable 透明
- JFrame的使用
- JFrame的使用
- JFrame的使用
- JFrame的使用笔记
- JTabbedPane选项窗格的使用
- JTabbedPane选项窗格的使用
- JTabbedPane选项窗格的使用
- Java选项卡(JTabbedPane)的使用
- SDWebImage的使用和体会
- ckeditor设置默认字体设置
- 判断对象是否undefined
- 硝烟中的应用市场
- Unity3d自学之路(一)
- 数据库编程总结
- 今日体会之JTabbedPane的使用和JFrame的透明化方法
- ASIHTTPRequest类库简介和使用说明
- Java基础知识——HashSet_TreeSet_Comparator
- 智能小车——摄像头
- jquery的extend和fn.extend
- PHP Mysql查询
- 网关串口+EM310
- VS2010串口通讯架构设计初探
- feedbacks from ICB2013