दिलचस्प पोस्ट
Xcode को सिस्टम हैडर खोज पथ जोड़ना किसी पाठ फ़ाइल में बहुआयामी सरणी कैसे लिखनी है? दूरस्थ सर्वर में सॉफ्टवेअर्स स्थापित करते समय आवे-कमांड के साथ समस्याएं एक Rx "RetryAfter" एक्सटेंशन विधि लिखें एकता 3 डी यूआई, एक आइटम खींचने की स्थिति के लिए गणना? window.onload बनाम body.onload बनाम दस्तावेज़। अभी .NET DateTime.Now गलत समय देता है जब समय क्षेत्र बदल जाता है NSLocalizedString () का दूसरा पैरामीटर क्या है? एप्लिकेशन को प्रबंधित करने की एप्लिकेशन जानकारी में साफ़ करें डेटा बटन को अक्षम कैसे करें सी #: पीएनजी संपीड़न एल्गोरिथ्म / पुस्तकालय की मांग रीडर और इनटस्टस्ट्रीम के बीच अंतर क्या है? MinGW स्टैटिक लाइब्रेरी (.a) से विजुअल स्टूडियो स्टैटिक लाइब्रेरी (.lib) java.lang.StackOverFlow त्रुटि संदिग्ध कई विचार हैं? विधानसभा के फ्रेमवर्क (CLR) संस्करण निर्धारित करें स्ट्रिंग में स्ट्रिंग की घटना को कैसे गणना करना है?

कार्यक्रम विस्तारित जेपीनल कक्षा के पेंट कॉम्पोनेंट () को एक्सेस नहीं कर रहा है

यह JFrame

 package client.connection; import java.awt.Dimension; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import javax.swing.JFrame; class DrawFrameRemoteControl extends JFrame { private DrawPanelRemoteControl imagePanel; private ClientRemoteControlConnection clientRemoteControlConnection; private ObjectInputStream clientInputStream; private ObjectOutputStream clientOutputStream; private Dimension imageDimension; private Dimension serverDimension; public DrawFrameRemoteControl(Dimension imageDimension,ClientRemoteControlConnection clientRemoteControlConnection,ObjectInputStream clientInputStream,ObjectOutputStream clientOutputStream,Dimension serverDimension) { super("Remote Desktop Control"); this.clientRemoteControlConnection=clientRemoteControlConnection; this.clientInputStream=clientInputStream; this.clientOutputStream=clientOutputStream; this.imageDimension=imageDimension; this.serverDimension=serverDimension; imagePanel=new DrawPanelRemoteControl(imageDimension); add(imagePanel); setSize(imageDimension.width,imageDimension.height); setResizable(false); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); setLocationRelativeTo(null); } void drawNewImageGrayscale(byte[] array) { imagePanel.setNewImageGrayscale(array); imagePanel.repaint(); } } 

और यह विस्तारित जेन्नेल वर्ग है-

 package client.connection; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.Transparency; import java.awt.color.ColorSpace; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.ComponentColorModel; import java.awt.image.DataBuffer; import java.awt.image.DataBufferByte; import java.awt.image.MemoryImageSource; import java.awt.image.Raster; import java.awt.image.SampleModel; import java.awt.image.WritableRaster; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; class DrawPanelRemoteControl extends JPanel { private byte[] byteArray=null; private Image image; private JLabel imageLabel=new JLabel(); private Dimension imageDimension; public DrawPanelRemoteControl(Dimension imageDimension) { this.imageDimension=imageDimension; add(imageLabel); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); System.out.println("."); if(byteArray!=null) { image=getGrayscaleImageFromArray(byteArray,imageDimension.width,imageDimension.height); imageLabel.setIcon(new ImageIcon(image)); } } private Image getGrayscaleImageFromArray(byte[] buffer, int width, int height) { ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY); int[] nBits = { 8 }; ColorModel cm = new ComponentColorModel(cs, nBits, false, true,Transparency.OPAQUE, DataBuffer.TYPE_BYTE); SampleModel sm = cm.createCompatibleSampleModel(width, height); DataBufferByte db = new DataBufferByte(buffer, width * height); WritableRaster raster = Raster.createWritableRaster(sm, db, null); BufferedImage result = new BufferedImage(cm, raster, false, null); return result; } void setNewImageGrayscale(byte[] array) { this.byteArray=array; this.intArray=null; } } 

मैंने कोड को डीबग करने की कोशिश की है, भले ही imagePanel.repaint() को कई बार निष्पादित किया जा रहा है, कार्यक्रम DrawPanelRemoteControl क्लास की DrawPanelRemoteControl paintComponent() विधि तक नहीं पहुंचता है।

क्या कोई मुझे यह बता सकता है कि ऐसा क्यों हो सकता है? क्या यह imageDimension साथ कुछ भी करने के लिए मिला imageDimension ऑब्जेक्ट?

अतिरिक्त जानकारी: main() विधि में, एक DrawFrameRemoteControl ऑब्जेक्ट बनाया गया है और यह drawNewImageGrayscale(byte[] arr) विधि को main() प्रत्येक सेकंड से अद्यतन किया जा रहा है

वेब के समाधान से एकत्रित समाधान "कार्यक्रम विस्तारित जेपीनल कक्षा के पेंट कॉम्पोनेंट () को एक्सेस नहीं कर रहा है"

यह स्पष्ट नहीं है कि आप byte[] आसपास क्यों गुजर रहे हैं, लेकिन ऐसा लगता है कि आप एक भूरे थंबनेल के साथ किसी घटक के Icon को अपडेट करना चाहते हैं। नीचे दिए गए उदाहरण मौजूदा नमूना आइकन से ग्रेस्केल आइकन बनाता है और अपडेट करने के लिए setIcon() का उपयोग करता है एक समान दृष्टिकोण किसी भी Image साथ काम करता है यह उदाहरण भी देखें जो कि रंग ColorConvertOp सुझाव देता है, और यह उदाहरण जो आइकन के बजाय पूरे घटकों को अपडेट करता है

ग्रे आइकॉन एक्वा

ग्रे प्रतीक निम्बस

 import java.awt.Color; import java.awt.EventQueue; import java.awt.Graphics2D; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.awt.image.ColorConvertOp; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JToggleButton; import javax.swing.Timer; import javax.swing.UIManager; /** * @see https://stackoverflow.com/a/12228640/230513 * @see https://stackoverflow.com/a/7935040/230513 */ public class GrayIcons extends JPanel { private List<Icon> list = new ArrayList<Icon>(); private List<JToggleButton> buttons = new ArrayList<JToggleButton>(); private Timer timer = new Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { update(); } }); public GrayIcons() { this.setLayout(new GridLayout(1, 0)); list.add(getGray(UIManager.getIcon("OptionPane.errorIcon"))); list.add(getGray(UIManager.getIcon("OptionPane.informationIcon"))); list.add(getGray(UIManager.getIcon("OptionPane.warningIcon"))); list.add(getGray(UIManager.getIcon("OptionPane.questionIcon"))); for (Icon icon : list) { JToggleButton jtb = new JToggleButton(icon); buttons.add(jtb); this.add(jtb); } timer.start(); } private void update() { Collections.shuffle(list); int index = 0; for (JToggleButton b : buttons) { b.setIcon(list.get(index++)); } } /** * @see https://stackoverflow.com/q/5830533/230513 * @see https://stackoverflow.com/a/3106550/230513 */ private Icon getGray(Icon icon) { final int w = icon.getIconWidth(); final int h = icon.getIconHeight(); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gd = ge.getDefaultScreenDevice(); GraphicsConfiguration gc = gd.getDefaultConfiguration(); BufferedImage image = gc.createCompatibleImage(w, h); Graphics2D g2d = image.createGraphics(); g2d.setPaint(new Color(0x00f0f0f0)); g2d.fillRect(0, 0, w, h); icon.paintIcon(null, g2d, 0, 0); BufferedImage gray = new BufferedImage(w, h, BufferedImage.TYPE_BYTE_GRAY); ColorConvertOp op = new ColorConvertOp( image.getColorModel().getColorSpace(), gray.getColorModel().getColorSpace(), null); op.filter(image, gray); return new ImageIcon(gray); } private void display() { JFrame f = new JFrame("GrayIcons"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(this); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new GrayIcons().display(); } }); } }