swing storm

          java桌面應用

          導航

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

          統計

          常用鏈接

          留言簿(15)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          今天發現了JTabbedPane的一個bug!

          當所有的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 閱讀(1825) 評論(5)  編輯  收藏

          評論

          # re: 今天發現了JTabbedPane的一個bug! 2007-05-27 14:46 ronghai

          你重新繪畫一下就行了 .在重新 設一下可視   回復  更多評論   

          # re: 今天發現了JTabbedPane的一個bug! 2007-05-27 14:47 ronghai

          this.repaint();
          this.setVisible(true);  回復  更多評論   

          # re: 今天發現了JTabbedPane的一個bug! 2007-05-27 15:22 azure

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

          # re: 今天發現了JTabbedPane的一個bug![未登錄] 2007-05-28 01:54 biaoflying

          1:要重回的話應該是TabbedPaneExample.this.repaint();
          2:但是沒有用  回復  更多評論   

          # re: 今天發現了JTabbedPane的一個bug![未登錄] 2007-05-29 09:10 wzjin

          在提交bug前是要注意些,前不久我也碰到類似情況,jdk升級以后以前有個功能不能實現了,后來加了兩行代碼就好了。  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 井陉县| 井研县| 道真| 贵州省| 那坡县| 祁门县| 河间市| 汉阴县| 灵寿县| 漠河县| 江口县| 永胜县| 镇安县| 水富县| 阿瓦提县| 凌海市| 建宁县| 遂川县| 凤山县| 柳江县| 淮南市| 宁都县| 黄大仙区| 东乡族自治县| 盱眙县| 永平县| 平和县| 拜泉县| 建平县| 渭源县| 竹溪县| 抚顺市| 冕宁县| 沙湾县| 庆元县| 惠东县| 新疆| 中江县| 依安县| 泰州市| 桦川县|