दिलचस्प पोस्ट
यदि स्ट्रिंग्स को एनएटी में अपरिवर्तनीय है, तो सबस्ट्रिंग ओ (एन) समय क्यों लेते हैं? एक किंवदंती में रंग और आकार के लिए किंवदंतियों का मिश्रण क्या JQuery $ समारोह () आग पर है? ClearCase UCM – घटकों का उपयोग करने के सर्वोत्तम अभ्यास क्या मैं आराम के बारे में नहीं समझ रहा हूँ? एंड्रॉइड 3.0 और अधिक में एक्शनबार के टच इफेक्ट रंग को मैं कैसे बदल सकता हूं सी / सी ++ परियोजनाओं के लिए मेवेन का उपयोग करना मैं C ++ में स्ट्रिंग को कैसे दोहरा सकता हूं? एकाधिक INNER SQL एक्सेस में शामिल हों जब valueChangeListener या f का उपयोग करें: अजाक्स श्रोता? pthread: एक प्रिंटफ़ स्टेटमेंट बाल थ्रेड में दो बार प्रिंट हो जाता है पैरामीटर की गई क्वेरी में गैर-पैरामीटर वाले क्वेरी से बेहद धीमी क्वेरी योजना क्यों उत्पन्न होती है TextView.setTextSize असामान्य रूप से व्यवहार करता है – विभिन्न स्क्रीन के लिए गतिशील रूप से टेक्स्टएव का टेक्स्ट आकार सेट करना कैसे jQuery के प्रत्येक लूप को तोड़ने के लिए हाइबरनेट बनाम जेपीए बनाम जेडीओ – पेशेवरों और प्रत्येक के विचार?

JTabbedPane: एक टैब में कार्य प्रगति दिखाएं

मेरे पास एक सरल स्विंग जावा एप्लिकेशन है जो खोज करता है, और परिणाम नए टैब में दिखाए जाते हैं। जब खोज चल रही है, तो मैं टैब के शीर्षक में प्रगति आइकन या एनीमेशन दिखाना चाहता हूं। मैंने एक जीआईएफ आइकन जोड़ने की कोशिश की, लेकिन यह चेतन नहीं है। क्या ऐसा कोई कारण नहीं है जो यह काम नहीं कर रहा है?

Solutions Collecting From Web of "JTabbedPane: एक टैब में कार्य प्रगति दिखाएं"

प्रगति सलाखों के बारे में स्विंग ट्यूटोरियल (और सामान्य रूप में प्रगति दिखाना) शुरू करने के लिए एक बहुत अच्छी जगह है। यह आपको दिखाता है कि उपयोगकर्ता को लंबे समय तक चलने वाले ऑपरेशन की प्रगति दिखाने के लिए एक कार्यकर्ता धागे पर लंबे समय से चलने वाले ऑपरेशन को एक SwingWorker का उपयोग करके और कुछ अंतराल पर अपने यूआई को अपडेट करने के लिए कैसे करें। स्विंग SwingWorker और स्विंग में SwingWorker बारे में अधिक जानकारी के लिए एक और ट्यूटोरियल उपलब्ध है

और हमेशा की तरह, यह साइट उदाहरणों से भरा है। उदाहरण के लिए मेरा एक पिछले उत्तर उपयोगकर्ता को प्रगति दिखाने के लिए SwingWorker वर्ग का उपयोग करता है

संपादित करें

जैसा कि मैंने आपके प्रश्न के टैब भाग के शीर्षक को याद किया। आप एक 'प्रगति आइकन' बना सकते हैं और टैब पर सेट कर सकते हैं। SwingWorker उपयोग तब आइकन को अपडेट करने के लिए किया जा सकता है।

ऐसे चिह्न का एक उदाहरण है उदाहरण प्रगति आइकन , जो मूल रूप से एक छवि है जो हर बार कुछ प्रगति की जाती है। टैब्ड फलक ट्यूटोरियल आपको दिखाता है कि कैसे अपने टैब में चिह्न जोड़ने के लिए (या यहां तक ​​कि कस्टम घटकों का उपयोग करें)

EDIT2

जैसा कि ऐसा लगता है कि मैक मैक JDK1.7 के साथ संयोजन से अन्य सिस्टम पर एक एनिमेटेड जीआईएफ दिखाने के लिए इतना आसान बनाता है, मैंने एक छोटा एसएससीसीई भी बनाया है, जो एंड्रयू के समान है लेकिन एक घूर्णन चिह्न के साथ जो इसे पसंद नहीं करता द्वारा बनाया गया है, और मैं उद्धरण, 'मनोदशा चिम्पांजी' घूर्णन आइकन कोड इस साइट से आता है (मैं नीचे छीन लिया संस्करण इस्तेमाल किया और टाइमर जोड़ा) केवल एक चीज के बारे में मैं बहुत खुश नहीं हूँ, यह तथ्य है कि मुझे अपने टैबिड फलक को घुमाए जाने वाले आइकन पर ट्रिगर करने की आवश्यकता है। संभव समाधान है RotatingIcon वर्ग के बाहर टाइमर खींचने के लिए, लेकिन हे, यह केवल एक SSCCE है। छवियां शामिल नहीं हैं लेकिन Google के साथ पाए गए

 import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTabbedPane; import javax.swing.Timer; import java.awt.Component; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.AffineTransform; public class ProgressTabbedPane { public static void main( String[] args ) { EventQueue.invokeLater( new Runnable() { @Override public void run() { JFrame frame = new JFrame( "RotatingIcon" ); JTabbedPane tabbedPane = new JTabbedPane( ); tabbedPane.addTab( "Searching", new RotatingIcon( new ImageIcon( "resources/images/progress-indeterminate.png" ), tabbedPane ), new JLabel( new ImageIcon( "resources/images/rotatingIcon.gif" ) ) ); frame.getContentPane().add( tabbedPane ); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); frame.pack(); frame.setVisible( true ); } } ); } private static class RotatingIcon implements Icon{ private final Icon delegateIcon; private double angleInDegrees = 90; private final Timer rotatingTimer; private RotatingIcon( Icon icon, final JComponent component ) { delegateIcon = icon; rotatingTimer = new Timer( 100, new ActionListener() { @Override public void actionPerformed( ActionEvent e ) { angleInDegrees = angleInDegrees + 10; if ( angleInDegrees == 360 ){ angleInDegrees = 0; } component.repaint(); } } ); rotatingTimer.setRepeats( false ); rotatingTimer.start(); } @Override public void paintIcon( Component c, Graphics g, int x, int y ) { rotatingTimer.stop(); Graphics2D g2 = (Graphics2D )g.create(); int cWidth = delegateIcon.getIconWidth() / 2; int cHeight = delegateIcon.getIconHeight() / 2; Rectangle r = new Rectangle(x, y, delegateIcon.getIconWidth(), delegateIcon.getIconHeight()); g2.setClip(r); AffineTransform original = g2.getTransform(); AffineTransform at = new AffineTransform(); at.concatenate(original); at.rotate(Math.toRadians( angleInDegrees ), x + cWidth, y + cHeight); g2.setTransform(at); delegateIcon.paintIcon(c, g2, x, y); g2.setTransform(original); rotatingTimer.start(); } @Override public int getIconWidth() { return delegateIcon.getIconWidth(); } @Override public int getIconHeight() { return delegateIcon.getIconHeight(); } } } 

संदर्भ के लिए एक स्क्रीनशॉट शर्म की बात है कि आइकन स्क्रीनशॉट में घुमाए नहीं जाते। SSCCE स्क्रीनशॉट

टैब आइकन के रूप में एनिमेटेड छवि

 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; public class ImageOnTab { ImageOnTab() { final BufferedImage image = new BufferedImage( 32,32,BufferedImage.TYPE_INT_RGB); final JTabbedPane pane = new JTabbedPane(); ImageIcon icon = new ImageIcon(image); pane.addTab( "Progress", icon, new JTree() ); ActionListener listener = new ActionListener() { int x = 0; int step = 1; public void actionPerformed(ActionEvent ae) { Graphics g = image.createGraphics(); x+=step; if (step>0) { if (x>32) { step=-step; } } else if (x<0) { step=-step; } g.setColor(Color.ORANGE); g.fillRect(0,0,32,32); g.setColor(Color.RED); g.fillRect(0,0,x,32); g.dispose(); pane.repaint(); } }; Timer timer = new Timer(100,listener); timer.start(); JOptionPane.showMessageDialog(null, pane); } public static void main(String[] args) throws Exception { //Create the GUI on the event dispatching thread SwingUtilities.invokeLater(new Runnable(){ @Override public void run() { new ImageOnTab(); } }); } } 

@ एंड्रयू थॉम्पसन

 It would be great if the J2SE supported animated GIFs 'out of the box' in more situations. I tried that animated GIF (nice image, BTW) as a tab icon, and no, it remains static. 

मैं पूरी तरह से पढ़ना नहीं चाहता …, लेकिन अपने साथ कोड और @ कचरा की महामहिम को एक साथ डाल दिया

1) Htlm उपयोग Htlm (मैं सादे एचटीएमएल में अच्छा नहीं हूँ)

2) JLabel#(setOpaque(true)) साथ JLabel#(setOpaque(true)) उपयोग करें JLabel#(setOpaque(true))

3) JLayer प्रयोग JLayer ( JXLayer बेहतर है, क्योंकि एसन ओराकल महत्वपूर्ण तरीकों को हटा दें == मेरे विचार)

4) आपको स्विंग जेकॉम्पेनेट्स द्वारा @टेरेई के लिए मजबूर करना होगा

5) रोब के एनिमेटेड आइकन , JTabbedPane लिए रोब द्वारा कई बार मेटीशन किया गया समर्थन

कोड

 import java.awt.*; import java.awt.event.*; import java.net.MalformedURLException; import java.net.URL; import java.util.Random; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.*; //https://stackoverflow.com/questions/3483485/java-jprogressbar-or-equivalent-in-a-jtabbedpane-tab-title/3484251#3484251 public class JTabbedTest { private JFrame f = new JFrame(); private JTabbedPane jtp = new JTabbedPane(); private URL url = null; public JTabbedTest() { try { url = new URL("http://pscode.org/media/starzoom-thumb.gif"); } catch (MalformedURLException ex) { Logger.getLogger(JTabbedTest.class.getName()).log(Level.SEVERE, null, ex); } ImageIcon ii = new ImageIcon(url); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jtp.setPreferredSize(new Dimension(400, 200)); createTab("Reds", Color.RED); createTab("Greens", Color.GREEN); createTab("Blues", Color.BLUE); f.add(jtp, BorderLayout.CENTER); jtp.setTitleAt(2, "<html><img src=" + ii + " width=20 height=20></img></html>"); // change foreground Color for disabled tab /*jtp.setTitleAt(2, "<html><font color=" + (jtp.isEnabledAt(2) ? "black" : "red") + ">" + jtp.getTitleAt(2) + "</font></html>");*/ Rectangle tabBounds = jtp.getBoundsAt(0); Container glassPane = (Container) f.getRootPane().getGlassPane(); glassPane.setVisible(true); glassPane.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.weightx = 1.0; gbc.weighty = 1.0; gbc.fill = GridBagConstraints.NONE; gbc.insets = new Insets(tabBounds.y + 23, 0, 0, 5); gbc.anchor = GridBagConstraints.NORTHEAST; JButton button = new JButton("My Button Position", ii); button.setPreferredSize(new Dimension(button.getPreferredSize().width, (int) tabBounds.getHeight() - 2)); glassPane.add(button, gbc); f.pack(); f.setVisible(true); } private void createTab(String name, Color color) { ProgressIcon icon = new ProgressIcon(color); jtp.addTab(name, icon, new ColorPanel(jtp, icon)); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { JTabbedTest jTabbedTest = new JTabbedTest(); } }); } private static class ColorPanel extends JPanel implements ActionListener { private static final Random rnd = new Random(); private static final long serialVersionUID = 1L; private final Timer timer = new Timer(1000, this); private final JLabel label = new JLabel("Stackoverflow!"); private final JTabbedPane parent; private final ProgressIcon icon; private final int mask; private int count; public ColorPanel(JTabbedPane parent, ProgressIcon icon) { super(true); this.parent = parent; this.icon = icon; this.mask = icon.color.getRGB(); this.setBackground(icon.color); label.setForeground(icon.color); this.add(label); timer.start(); } @Override public void actionPerformed(ActionEvent e) { this.setBackground(new Color(rnd.nextInt() & mask)); this.icon.update(count += rnd.nextInt(8)); this.parent.repaint(); } } private static class ProgressIcon implements Icon { private static final int H = 16; private static final int W = 3 * H; private Color color; private int w; public ProgressIcon(Color color) { this.color = color; } public void update(int i) { w = i % W; } @Override public void paintIcon(Component c, Graphics g, int x, int y) { g.setColor(color); g.fillRect(x, y, w, H); } @Override public int getIconWidth() { return W; } @Override public int getIconHeight() { return H; } } }