2013-03-28 5 views
6

मैंने जावा में एक साधारण मेनू बनाया है, लेकिन मैं यह नहीं समझ सकता कि बटन के आकार को कैसे बदला जाए। मेरा मेनू इस तरह दिखता है: Current lookबटन का आकार (जावा)

मैं चाहता हूं कि आखिरी बटन अन्य बटनों जैसा ही आकार हो।

tlacTisk.setSize(10,10); 
tlacTisk.setPreferredSize(10,10); 

काम नहीं करता है।

कोड है, जहां मैं बटन और बॉक्स बनाया:

JButton tlacSVG = new JButton(); 
     tlacSVG.setText("Export do SVG"); 
     tlacSVG.addActionListener(new ActionListener() 
     { 
      @Override 
      public void actionPerformed(ActionEvent e) 
      { 
       exportujSVG(); 
      } 
     }); 

     JButton tlacPNG = new JButton(); 
     tlacPNG.setText("Export do PNG"); 
     tlacPNG.addActionListener(new ActionListener() 
     { 
      @Override 
      public void actionPerformed(ActionEvent e) 
      { 
       exportujPNG(); 
      } 
     }); 

     JButton tlacTisk = new JButton(); 
     tlacTisk.setText("Tisk..."); 
     tlacTisk.setPreferredSize(new Dimension(50, 25)); 
     tlacTisk.addActionListener(new ActionListener() 
     { 
      @Override 
      public void actionPerformed(ActionEvent e) 
      { 
       tiskni(); 
      } 
     }); 


     Box boxTlacitek = Box.createVerticalBox(); 
     boxTlacitek.add(Box.createVerticalStrut(5)); 
     boxTlacitek.add(tlacSVG); 
     boxTlacitek.add(Box.createVerticalStrut(10)); 
     boxTlacitek.add(tlacPNG); 
     boxTlacitek.add(Box.createVerticalStrut(10)); 
     boxTlacitek.add(tlacTisk); 
     boxTlacitek.setBorder(BorderFactory.createTitledBorder("Menu")); 

     okno.add(boxTlacitek, BorderLayout.EAST); 

तुम मुझे सलाह मैं कैसे आकार बदल सकते हैं दे सकते हैं? धन्यवाद।

उत्तर

12

विभिन्न लेआउट प्रबंधक पसंदीदा आकार का अलग-अलग व्यवहार करते हैं। साथ ही, setSize() के साथ आकार सेट करना एक अच्छा विचार नहीं है। लेआउट प्रबंधक आपके लिए लेआउट करने दें। अधिक जानकारी और उदाहरणों के लिए A Visual Guide to Layout Managers देखें।

उदाहरण के लिए आप बटन धारण करने वाले एक अलग पैनल बना सकते हैं। अपना लेआउट GridLayout पर सेट करें। इस लेआउट में घटक अपने सेल के भीतर सभी उपलब्ध स्थान लेते हैं, और प्रत्येक सेल बिल्कुल वही आकार है। इस पैनल को कंटेनर में जोड़ें। उदाहरण के लिए How to Use GridLayout देखें।

यहाँ GridLayout का एक सरल डेमो और GridBagLayout है:

enter image description here

import java.awt.*; 
import javax.swing.*; 

public class DemoButtons { 
    public DemoButtons() { 
     final JFrame frame = new JFrame("Demo buttons"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel buttonPanel = new JPanel(new GridLayout(3, 1)); 
     buttonPanel.add(new JButton("Export do SVG")); 
     buttonPanel.add(new JButton("Export do PNG")); 
     buttonPanel.add(new JButton("Tisk...")); 

     JPanel east = new JPanel(new GridBagLayout()); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.anchor = GridBagConstraints.NORTH; 
     gbc.weighty = 1; 
     east.add(buttonPanel, gbc); 

     JPanel center = new JPanel(){ 
      @Override 
      public Dimension getPreferredSize() { 
       return new Dimension(200, 200); 
      } 
     }; 
     center.setBorder(BorderFactory.createLineBorder(Color.BLACK)); 

     frame.add(east, BorderLayout.EAST); 
     frame.add(center); 

     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     try { 
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new DemoButtons(); 
      } 
     }); 
    } 
} 
+1

धन्यवाद, मैंने आपका समाधान उपयोग किया :) – Sk1X1

+0

@ Sk1X1 आपका स्वागत है, खुशी है कि यह आपकी मदद की :) – tenorsax

3

आप अपने बटन (या घटक) के आकार सीधे नियंत्रित करने की कोशिश के लेआउट प्रबंधक विन्यास उपयोग नहीं करना चाहिए अपने ऐसा करने के लिए कंटेनर (आपके मामले में मेनू का पैनल)।

ऐसा करने के लिए विभिन्न करने के लिए एक नजर है स्विंग लेआउट प्रबंधक: Swing Layout Managers

मैं personnaly JGoodies पसंद करते हैं एपीआई के रूप में, यह है कि मैं कहीं अधिक उपयोगकर्ता के लिए आसान खोजने के लिए और करने के लिए समय के साथ बनाए रखता है: JGoodies Forms API

सम्मान

संबंधित मुद्दे