2011-10-03 6 views
8

में तीर बटन को कैसे छिपाना है IATT एप्लिकेशन में java.awt.Scrollbar(VERTICAL) के तीर बटन को छिपाने की आवश्यकता है। क्या कोई जानता है कि यह कैसे प्राप्त किया जा सकता है?JSCrollBar

मैंने एक उदाहरण here देखा, लेकिन कोड बस बटन छुपाता है। बटन के लिए खाली जगह अभी भी बनी हुई है; यह स्क्रॉल बार पर कब्जा नहीं है।

अधिक सटीक होने के लिए, मुझे जो हासिल करना चाहिए उसका स्क्रीनशॉट यहां दिया गया है। मुझे यकीन नहीं है कि इसके बारे में किस दिशा में जाना है।

अपडेट: मैं एडब्ल्यूटी में एक समाधान की तलाश में था। लेकिन अब मैं स्विंग में भी सुझावों के लिए खुला हूं।

desired effect

+2

स्विंग के विपरीत, AWT घटकों एक [प्लगेबल देखो और महसूस] की जरूरत नहीं है (http://java.sun.com/products/JFC/tsc/लेख/वास्तुकला/# प्लगेबल)। आपको किसकी आवश्यकता है, एडब्ल्यूटी या स्विंग? – trashgod

+0

मुझे एडब्ल्यूटी का उपयोग करने की आवश्यकता है .. :) – tiger

+0

क्या 'स्क्रॉलबार' मूल्य चयन के लिए या 'स्क्रॉलपेन' के हिस्से के रूप में उपयोग किया जाता है? एक [एसएससीई] (http://sscce.org/) प्रस्तुत करने पर विचार करें जो दिखाता है कि आपने क्या प्रयास किया है। – trashgod

उत्तर

8

इस .. यह बटन है कि आकार में 0x0 के साथ कार्यक्षेत्र स्क्रॉलबार पर नियमित रूप से बटन की जगह की कोशिश करो।

यह अपने रूप को सीमित करने और महसूस करता है, हालांकि :(

JScrollPane scroller = new JScrollPane(mainPane); 
scroller.setPreferredSize(new Dimension(200,200)); 
// ... etc 
scroller.getVerticalScrollBar().setUI(new BasicScrollBarUI() 
    { 
     @Override 
     protected JButton createDecreaseButton(int orientation) { 
      return createZeroButton(); 
     } 

     @Override  
     protected JButton createIncreaseButton(int orientation) { 
      return createZeroButton(); 
     } 

     private JButton createZeroButton() { 
      JButton jbutton = new JButton(); 
      jbutton.setPreferredSize(new Dimension(0, 0)); 
      jbutton.setMinimumSize(new Dimension(0, 0)); 
      jbutton.setMaximumSize(new Dimension(0, 0)); 
      return jbutton; 
     } 
    }); 

अद्यतन: क्षमा करें, यह एक स्विंग समाधान

+0

प्रदान करने के लिए नहीं होगा धन्यवाद हैरी.इसने मुझे बहुत मदद की। मैं जवाब स्वीकार करूंगा .. – tiger

3

Nimbus Look and Feel का उपयोग करते हुए आप इस का उपयोग कर सकते तीर बटन को हटाने के लिए है:

UIManager.getLookAndFeelDefaults().put(
     "ScrollBar:\"ScrollBar.button\".size", 0); 
    UIManager.getLookAndFeelDefaults().put(
     "ScrollBar.decrementButtonGap", 0); 
    UIManager.getLookAndFeelDefaults().put(
     "ScrollBar.incrementButtonGap", 0); 

यहां एक पूर्ण उदाहरण है:

enter image description here

public class ScrollDemo extends JFrame { 

    public ScrollDemo() { 

     String[] columnNames = {"Column"}; 
     Object[][] data = { 
       {"A"},{"B"},{"C"},{"D"},{"E"},{"F"}, 
       {"A"},{"B"},{"C"},{"D"},{"E"},{"F"}, 
       {"A"},{"B"},{"C"},{"D"},{"E"},{"F"}, 
       {"A"},{"B"},{"C"},{"D"},{"E"},{"F"}, 
       {"A"},{"B"},{"C"},{"D"},{"E"},{"F"}, 
     }; 

     add(new JScrollPane(new JTable(data, columnNames))); 
     pack(); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 

       try { 
        UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); 
       } catch (Exception e) { 
        // No Nimbus 
       } 
       UIManager.getLookAndFeelDefaults().put(
         "ScrollBar:ScrollBarThumb[Enabled].backgroundPainter", 
         new FillPainter(new Color(127, 169, 191))); 
       UIManager.getLookAndFeelDefaults().put(
         "ScrollBar:ScrollBarThumb[MouseOver].backgroundPainter", 
         new FillPainter(new Color(127, 169, 191))); 
       UIManager.getLookAndFeelDefaults().put(
         "ScrollBar:ScrollBarTrack[Enabled].backgroundPainter", 
         new FillPainter(new Color(190, 212, 223))); 

       UIManager.getLookAndFeelDefaults().put(
         "ScrollBar:\"ScrollBar.button\".size", 0); 
       UIManager.getLookAndFeelDefaults().put(
         "ScrollBar.decrementButtonGap", 0); 
       UIManager.getLookAndFeelDefaults().put(
         "ScrollBar.incrementButtonGap", 0); 

       new ScrollDemo(); 
      } 
     }); 
    } 

} 

कोड के लिए Painter प्रयोग किया है:

public class FillPainter implements Painter<JComponent> { 

    private final Color color; 

    public FillPainter(Color c) { color = c; } 

    @Override 
    public void paint(Graphics2D g, JComponent object, int width, int height) { 
     g.setColor(color); 
     g.fillRect(0, 0, width-1, height-1); 
    } 

} 
+1

एक बार जब एक आदमी ने कहा, 'मुझे लगता है कि जाने का एकमात्र तरीका निंबस का उपयोग करना बंद करना है, हम्म अच्छी प्रगति + 1 – mKorbel