दिलचस्प पोस्ट
पकड़ने और फिर से फेंकने के लिए सर्वश्रेष्ठ प्रथाएं .नेट अपवाद एनएटी में कचरा संग्रहण को समझना डैटैंक्टक्ट की प्रत्येक प्रॉपर्टी पर एक नए इंस्टेंस को लागू करने के लिए WCF में कस्टम सीरियललाइजेशन या डिसेरायलाइजेशन का उपयोग कैसे करें? क्लिक पर सीएसएस गुण बदलें मानचित्र की एक सूची छँटाई <String, String> सी में प्रतिबिंब समर्थन जावा: नकारात्मक संख्या पर सही बदलाव पायथन जेनरेटर और इटरेटर के बीच अंतर "वेबएक्सएमएल एट्रिब्यूट की आवश्यकता है" मेवेन में त्रुटि रन और फ़ंक्शन संरचना Arguments.callee पदावनत है – इसके बजाय क्या उपयोग किया जाना चाहिए? क्रोम में सेलेनियम वेबड्रायवर अजगर बाइंडिंग चला रहा है सप्ताह की तारीख को कैसे परिवर्तित करें? इकाई ढांचे कोड पहले "भेदभाव" कॉलम बनाता है Node.js से Powershell स्क्रिप्ट निष्पादित करें

पैनल में एक जटिल छवि जोड़ें, इसके चारों ओर एक अनुकूलित उपयोगकर्ता इंटरफ़ेस में बटन

मैं कैसे नीचे की तरह इस छवि slavePanel और उस slavePanel शीर्ष पर JButtons समायोजित जो छवि की तरह लग रहा है, लेकिन बटन सही ढंग से चारों ओर लपेटा? (अभी वे 1 पंक्ति, 4 कॉलम में आकार लेते हैं)

यहां छवि विवरण दर्ज करें

  // // Shot Gun mover up/down/left/right, middle on is for zoom // public void GunMover(JPanel configPanel) throws IOException { // Master Panel - holds everything JPanel masterPanel = new Panel(); masterPanel.setLayout(new SpringLayout()); // Slave Panel - with image background JPanel slavePanel = new Panel(); slavePanel.setLayout(new SpringLayout()); // Row 1 final JButton ptzLeft = new JButton("<"); masterPanel.add(ptzLeft, BorderLayout.WEST); // Row 2 final JButton ptzRight = new JButton(">"); masterPanel.add(ptzRight, BorderLayout.CENTER); // Row 3 final JButton ptzUp = new JButton("^"); masterPanel.add(ptzUp, BorderLayout.WEST); // Row 4 final JButton ptzDown = new JButton("down"); masterPanel.add(ptzDown, BorderLayout.CENTER); // How do i add slavePanel this background and add all the JButtons // According to that image shape? // Layout the panel. SpringUtilities.makeCompactGrid(masterPanel, 1, 4, //rows, cols 6, 6, //initX, initY 6, 6); configPanel.setLayout(new GridLayout(0,1)); configPanel.add(masterPanel); } 

पालन ​​करें: Andrew Thompson + कम से कम मेरी टूटी हुई विधि से उत्कृष्ट एक

यहां छवि विवरण दर्ज करें

 package test; import java.awt.*; import java.awt.font.FontRenderContext; import java.awt.font.TextLayout; import javax.swing.*; public class New extends JFrame { private static final long serialVersionUID = 1L; private ImageIcon errorIcon = (ImageIcon) UIManager.getIcon("OptionPane.errorIcon"); private Icon infoIcon = UIManager.getIcon("OptionPane.informationIcon"); private Icon warnIcon = UIManager.getIcon("OptionPane.warningIcon"); public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { New t = new New(); } }); } public New() { setLayout(new BorderLayout()); JPanel slavePanel = new NewPanel(); slavePanel.setLayout(new GridLayout(0, 2, 4, 4)); add(slavePanel); JButton button = new JButton(); button.setBorderPainted(false); button.setBorder(null); button.setFocusable(false); button.setMargin(new Insets(0, 0, 0, 0)); button.setContentAreaFilled(false); button.setIcon((errorIcon)); button.setRolloverIcon((infoIcon)); button.setPressedIcon(warnIcon); button.setDisabledIcon(warnIcon); slavePanel.add(button); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setVisible(true); } } package test; import java.awt.*; import java.io.IOException; import java.io.InputStream; import javax.imageio.ImageIO; import javax.swing.*; import javax.swing.border.Border; public class NewPanel extends JPanel { private Image imageGui; private static Dimension screen; public NewPanel() { try { imageGui = ImageIO.read( (InputStream) NewPanel.class.getResourceAsStream( "/image/ptz.png")); } catch (IOException e) { e.printStackTrace(System.err); } Border border = BorderFactory.createEmptyBorder(11, 11, 11, 11); setOpaque(true); setBorder(border); setFocusable(true); setSize(getPreferredSize()); revalidate(); repaint(); setVisible(true); } public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(imageGui, 0, 0, imageGui.getWidth(null), imageGui.getHeight(null), null); revalidate(); repaint(); } @Override public Dimension getPreferredSize() { return new Dimension(imageGui.getWidth(null), imageGui.getHeight(null)); } } 

Solutions Collecting From Web of "पैनल में एक जटिल छवि जोड़ें, इसके चारों ओर एक अनुकूलित उपयोगकर्ता इंटरफ़ेस में बटन"

  1. 3×3 GridLayout उपयोग करें
  2. 9 कोशिकाओं में से प्रत्येक के लिए एक सबइमेज मिलता है:
    • प्रत्येक दूसरे घटक के लिए, सबइमेज के साथ एक लेबल जोड़ें।
    • प्रत्येक अन्य घटक के लिए, एक JButton जोड़ें जिसमें से अंतरिक्ष हटा दिया गया है। उप-छवि को आइकन के रूप में प्रयोग करें, लेकिन फ़ोकस, सक्रियण आदि को इंगित करने के लिए आपको वैकल्पिक आइकन की आवश्यकता होगी। यह उदाहरण 'दबाए गए' आइकन के आसपास एक लाल सीमा रखता है

कम्पास बटन

 import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; import javax.swing.*; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; public class CompassButtons { public CompassButtons(BufferedImage bi) { int w = bi.getWidth(); int h = bi.getHeight(); int step = w/3; JPanel p = new JPanel(new GridLayout(3,3)); p.setOpaque(false); int count = 0; for (int ii=0; ii<w; ii+=step) { for (int jj=0; jj<h; jj+=step) { // This is it - GET THE SUB IMAGE Image icon = bi.getSubimage(jj, ii, step, step); if (count%2==1) { JButton button = new JButton(new ImageIcon(icon)); // remove the border - indicate action using a different icon button.setBorder(null); // make a 'pressed' icon.. BufferedImage iconPressed = new BufferedImage(step,step,BufferedImage.TYPE_INT_ARGB); Graphics g = iconPressed.getGraphics(); g.drawImage(icon, 0, 0, p); g.setColor(Color.RED); g.drawRoundRect( 0, 0, iconPressed.getWidth(p)-1, iconPressed.getHeight(p)-1, 12, 12); g.dispose(); button.setPressedIcon(new ImageIcon(iconPressed)); // make it transparent button.setContentAreaFilled(false); button.setActionCommand(""+count); button.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent ae) { System.out.println(ae.getActionCommand()); } }); p.add(button); } else { JLabel label = new JLabel(new ImageIcon(icon)); p.add(label); } count++; } } JPanel center = new JPanel(new GridBagLayout()); center.setBackground(Color.BLACK); center.add(p); JOptionPane.showMessageDialog(null, center); } public static void main(String[] args) throws IOException { URL url = new URL("http://i.stack.imgur.com/SNN04.png"); final BufferedImage bi = ImageIO.read(url); SwingUtilities.invokeLater(new Runnable(){ @Override public void run() { new CompassButtons(bi); } }); } } 

इस उदाहरण से शुरू, मुझे इस तरह से MoveButton को बदलकर शुरू किया गया है:

 this.setBorderPainted(false); 

आप ControlPanel एक कस्टम लेआउट प्रबंधक दे सकते हैं जैसा कि ButtonModel सुझाव दिया है, मैं ButtonModel राज्य के आधार पर एक पृष्ठभूमि की छवि और कुछ प्रकार की दृश्य प्रतिक्रिया भी ButtonModel

1) आपको पहले और प्रत्येक 5 जेबटोन के लिए प्रतीक तैयार करना है ( यहां पर बटन मोडेल से आया है )

  • फोकस के बिना बुनियादी चिह्न

  • isRollover() आइकन isRollover()

  • isPressed() लिए चिह्न isPressed()

2) प्रतीक सेट करने के लिए और जेबटन से सभी "बेलस्ट" को कैसे निकालना है

3) इन 5 JButtons को चित्रित हलकों (रिमोटसेट) के साथ 5 JButtons डाल दिया