Witam!
Ładuję plik jpg, następnie pobieram wszystkie jego pixele do tablicy intów. Potem użytkownik wprowadza wartość szukanego koloru np. : fff6f3fa, w drugim polu tekstowym użytkownik podaje wartość HEX koloru na jaki chce zmienić ten podstawowy czyli (fff6f3fa). Kolory są w zapisie ARGB. Problem tkwi w tym, jeżeli użytkownik podaje kolory z kanałem alpha, to wywala ten błąd:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "fff6f3fa"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:495)
at okno.jButton3ActionPerformed(okno.java:220)
at okno.access$200(okno.java:32)
at okno$3.actionPerformed(okno.java:94)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:696)
at java.awt.EventQueue$4.run(EventQueue.java:694)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
A to kawałek kodu :
String _base = jTextField2.getText();
String _target = jTextField3.getText();
int count = 0;
int base = Integer.parseInt(_base, 16);
int target = Integer.parseInt(_target, 16);
for (int i = 0; i < this.data.length; i++) {
if (this.data[i] == base) {
this.data[i] = target;
count++;
}
}
JOptionPane.showMessageDialog(rootPane, "Wykonano " + count + " zamian");
Jeżeli podam kolory bez alpha czyli f6f3fa wszystko się wykonuje, lecz nie ma żadnych zmian, bo obrazek jest ARGB czyli nic nie znajduję.
Z góry dzięki za pomoc!