swing storm

          java桌面應(yīng)用

          導(dǎo)航

          <2007年5月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統(tǒng)計(jì)

          常用鏈接

          留言簿(15)

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          今天發(fā)現(xiàn)了JTabbedPane的一個(gè)bug!

          當(dāng)所有的tab被移除之后,背景上還留有原JTabbedPane所停留的痕跡(灰色邊框)。
          import java.awt.BorderLayout;
          import java.awt.Color;
          import java.awt.Dimension;
          import java.awt.event.MouseAdapter;
          import java.awt.event.MouseEvent;

          import javax.swing.JButton;
          import javax.swing.JFrame;
          import javax.swing.JLabel;
          import javax.swing.JPanel;
          import javax.swing.JTabbedPane;
          import javax.swing.border.EmptyBorder;

          public class TabbedPaneExample extends JFrame {
              JTabbedPane tabbedPane 
          = new JTabbedPane();

              JPanel tabbedPanePanel 
          = new JPanel();

              
          public void createAndShowGUI() {
                  tabbedPanePanel.setLayout(
          new BorderLayout());
                  tabbedPanePanel.setBackground(
          new Color(35119179));
                  tabbedPanePanel.setBorder(
          new EmptyBorder(58510));

                  tabbedPane.setBackground(
          new Color(79147196));
                  tabbedPane.setBorder(
          new EmptyBorder(0000));

                  tabbedPane.add(
          new JLabel("tab1"), "tab1");
                  tabbedPane.add(
          new JLabel("tab2"), "tab2");
                  
                  tabbedPanePanel.add(tabbedPane, BorderLayout.CENTER);
                  
                  JButton btn 
          = new JButton("close all");
                  btn.addMouseListener(
          new MouseAdapter() {
                      
          public void mouseClicked(MouseEvent e) {
                          tabbedPane.removeAll();
                      }
                  });

                  tabbedPanePanel.add(btn, BorderLayout.NORTH);
                  
                  
          this.setLayout(new BorderLayout());
                  
          this.add(tabbedPanePanel, BorderLayout.CENTER);
                  
          this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                  
          this.setSize(new Dimension(300200));
                  
          this.setLocationRelativeTo(null);
                  
          this.setVisible(true);
              }

              
          public static void main(String[] args) {
                  javax.swing.SwingUtilities.invokeLater(
          new Runnable() {
                      
          public void run() {
                          TabbedPaneExample example 
          = new TabbedPaneExample();
                          example.createAndShowGUI();
                      }
                  });
              }
          }

          posted on 2007-05-27 12:09 azure 閱讀(1819) 評(píng)論(5)  編輯  收藏

          評(píng)論

          # re: 今天發(fā)現(xiàn)了JTabbedPane的一個(gè)bug! 2007-05-27 14:46 ronghai

          你重新繪畫(huà)一下就行了 .在重新 設(shè)一下可視   回復(fù)  更多評(píng)論   

          # re: 今天發(fā)現(xiàn)了JTabbedPane的一個(gè)bug! 2007-05-27 14:47 ronghai

          this.repaint();
          this.setVisible(true);  回復(fù)  更多評(píng)論   

          # re: 今天發(fā)現(xiàn)了JTabbedPane的一個(gè)bug! 2007-05-27 15:22 azure

          謝謝你的建議,使用this.setVisible(false); 可以讓痕跡消失。這樣做繞過(guò)了這個(gè)bug。這樣做可以達(dá)到效果要求,:)
          不足的是在實(shí)際應(yīng)用中在removeAll();之后還要add();
          如果使用了this.setVisible(false); 每次添加tab的時(shí)候還要this.setVisible(true)。
          我在想:tabbedPane.setBorder(new EmptyBorder(0, 0, 0, 0));
          之后removeAll();tabbedPane為什么還會(huì)有灰色的邊框,這是一個(gè)bug嗎。  回復(fù)  更多評(píng)論   

          # re: 今天發(fā)現(xiàn)了JTabbedPane的一個(gè)bug![未登錄](méi) 2007-05-28 01:54 biaoflying

          1:要重回的話(huà)應(yīng)該是TabbedPaneExample.this.repaint();
          2:但是沒(méi)有用  回復(fù)  更多評(píng)論   

          # re: 今天發(fā)現(xiàn)了JTabbedPane的一個(gè)bug![未登錄](méi) 2007-05-29 09:10 wzjin

          在提交bug前是要注意些,前不久我也碰到類(lèi)似情況,jdk升級(jí)以后以前有個(gè)功能不能實(shí)現(xiàn)了,后來(lái)加了兩行代碼就好了。  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 平塘县| 崇左市| 象州县| 库车县| 嘉义市| 岑溪市| 凤台县| 隆回县| 汉源县| 西乌| 阜平县| 南昌县| 福州市| 广丰县| 罗源县| 邹城市| 怀集县| 于都县| 高唐县| 兴宁市| 靖宇县| 黄浦区| 嘉峪关市| 育儿| 双柏县| 淮南市| 景谷| 鱼台县| 阿拉尔市| 成都市| 宁安市| 西充县| 伊金霍洛旗| 长春市| 沙洋县| 苍梧县| 井研县| 德格县| 宁晋县| 澳门| 高陵县|