में अजीब SpinnerNumberModel व्यवहार मैं मान = 0.0005 के साथ एक SpinnerNumberModel, न्यूनतम = 0.0, अधिकतम = 1.0, और कदम आकार = 0.0005 का उपयोग कर सेटअप करने के लिए कोशिश कर रहा हूँ एक JSpinner। हालांकि, जब मैं इन मानकों के साथ एक स्पिनर बनाता हूं तो मैं बहुत अजीब व्यवहार करता हूं। 0.0005 से शुरू होने और ऊपर तीर के प्रत्येक क्लिक के साथ 0.0005 से बढ़ने की बजाय, मान 0जावा
यह सुनिश्चित करने के लिए कि यह केवल एक स्वरूपण समस्या नहीं है, मैंने स्पिनर के मूल्य को मुद्रित किया प्रत्येक परिवर्तन घटना। निश्चित रूप से पर्याप्त, ऊपर तीर के प्रत्येक क्लिक के लिए, कंसोल मूल्य को 0 और फिर 0.0005 के रूप में दिखाता है, इस पर ध्यान दिए बिना कि स्पिनर कितनी बार क्लिक किया गया है।
नीचे कोड मैं थोड़ा अलग मानों तुलना प्रयोजनों के लिए बस ठीक काम करता है के साथ एक स्पिनर सहित इस परीक्षण करने के लिए, का उपयोग किया है है।
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(200, 80);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
final JSpinner spinner1 = new JSpinner(new SpinnerNumberModel(0.0005, 0.0, 1.0, 0.0005));
final JSpinner spinner2 = new JSpinner(new SpinnerNumberModel(0.05, 0.0, 1.0, 0.05));
panel.add(spinner1, BorderLayout.NORTH);
panel.add(spinner2, BorderLayout.SOUTH);
frame.add(panel);
spinner1.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
System.out.println("spinner1: " + ((Number) spinner1.getValue()).doubleValue());
}
});
spinner2.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
System.out.println("spinner2: " + ((Number) spinner2.getValue()).doubleValue());
}
});
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
क्या कोई मुझे बता सकता है कि स्पिनर 2 इरादे के रूप में क्यों काम करता है, लेकिन स्पिनर 1 नहीं है?
धन्यवाद।
संपादित करें: उनका कहना है स्पिनर की पाठ क्षेत्र के स्वरूपण वास्तव में संग्रहीत मूल्य पर एक प्रभाव है कि के लिए पीटर के लिए धन्यवाद। इरादे के रूप में काम करने वाले पहले स्पिनर को पाने के लिए, मैंने लाइन जोड़ा: spinner1.setEditor(new JSpinner.NumberEditor(spinner1, "0.0000"));
।
इनपुट के लिए धन्यवाद। वास्तविक परियोजना जहां मैंने पहली बार इस मुद्दे का सामना किया था उससे कहीं अधिक जटिल है। जिस कोड को मैंने यहां पोस्ट किया है वह एक बहुत ही नंगे हड्डियों का उदाहरण है जो इस मुद्दे का प्रदर्शन करता है। –
ठीक है, मैंने दो स्पिनरों को पकड़ने के लिए जेपीनल को शामिल करने के लिए उदाहरण संपादित किया है। दुर्भाग्य से, मुझे अभी भी पहले स्पिनर के लिए वही जीतने वाले परिणाम मिलते हैं। –
मैंने एक जेपीनल का उपयोग किया है और समस्या अभी भी बनी हुई है। मैंने JSPinner मॉडल (मूल्य, चरण) और (0.0001, 0.001) के रूप में (0.001, 0.0001) का उपयोग करने का प्रयास किया है। न तो काम करता है। लेकिन (0.001, 0.001) इसके बजाए काम करता है। क्या यह JSpinner प्रस्तुत करने की सटीकता की समस्या का तात्पर्य है? – xorange