سؤال

ولقد خلق تطبيق يتأرجح، وهناك زر "ابدأ" في واجهة المستخدم الرسومية. أريد أن كلما أنا النقر على هذا الزر "ابدأ"، يجب أن تكون على زر البداية المعوقين و"إيقاف" يجب تمكين زر.

لأنني قد كتبت التعليمة البرمجية التالية في "ActionPeformed (...)" طريقة على زر "ابدأ"

startButton.setEnabled(false);
stopButton.setEnabled(true);

ولكن رمز أعلاه لا تخلق المطلوب تؤثر على واجهة المستخدم الرسومية.

هل رمز أعلاه صحيحة لماذا أريد أن أفعل؟

وانها لا تعمل مع "إعادة رسم ()" للغاية.

وتحرير:

ورمز طويل جدا لذلك لا يمكن لصق كافة التعليمات البرمجية. أستطيع أن أقول، على الرغم من أكثر حول رمز.

في أسلوب "ActionPeformed" من زر "ابدأ"، بعد استدعاء اثنين من البيانات المذكورة أعلاه، وأنا على تنفيذ "SwingWorker" موضوع.

هل هذا الموضوع خلق أي مشكلة؟

هل كانت مفيدة؟

المحلول

<اقتباس فقرة>   

لأنني قد كتبت التعليمة البرمجية التالية في "ActionPeformed (...)" طريقة على زر "ابدأ"

وتحتاج هذا الرمز ليكون في actionPerformed(...) من ActionListener مسجل مع زر ابدأ، وليس من أجل زر ابدأ نفسها.

ويمكنك إضافة ActionListener بسيطة مثل هذا:

JButton startButton = new JButton("Start");
startButton.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent ae) {
        startButton.setEnabled(false);
        stopButton.setEnabled(true);
     }
   }
 );

ونلاحظ أن startButton الخاص بك وسوف تحتاج أعلاه أن final في المثال أعلاه إذا كنت تريد إنشاء المستمع مجهول في نطاق محلي.

نصائح أخرى

<اقتباس فقرة>   

ورمز طويل جدا لذلك لا يمكن لصق   كافة التعليمات البرمجية.

ويمكن أن يكون هناك أي عدد من الأسباب لماذا لا تعمل التعليمات البرمجية. ربما كنت أعلنت المتغيرات زر مرتين حتى انك لا تغيير في الواقع تمكين / تعطيل زر مثلك تعتقد انك. ربما كنت تسد بتوقيت شرق الولايات المتحدة.

و

وتحتاج إلى إنشاء SSCCE لإضافة في المنتدى.

وهكذا تصل إلى أنت لعزل المشكلة. تبدأ مع إطار بسيط مناطق الإسكان المؤقت اثنين من الأزرار ومعرفة ما إذا كان يعمل التعليمات البرمجية. بمجرد الحصول على هذا العمل، ثم حاول بدء الموضوع أن ينام لمجرد 10 ثانية لمعرفة ما اذا كان لا يزال يعمل.

وتعلم كيف basice العمل أولا قبل كتابة برنامج 200 خط.

وتعلم كيفية القيام ببعض التصحيح الأساسي، ونحن لا مانع القراء. لا يمكننا تخمين ما خطأ سخيف تقومون به على أساس وصفك اللفظي للمشكلة.

وهذا يعمل.

public class TestButton {

public TestButton() {
    JFrame f = new JFrame();
    f.setSize(new Dimension(200,200));
    JPanel p = new JPanel();
    p.setLayout(new FlowLayout());

    final JButton stop = new JButton("Stop");
    final JButton start = new JButton("Start");
    p.add(start);
    p.add(stop);
    f.getContentPane().add(p);
    stop.setEnabled(false);
    stop.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            start.setEnabled(true);
            stop.setEnabled(false);

        }
    });

    start.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            start.setEnabled(false);
            stop.setEnabled(true);

        }
    });
    f.setVisible(true);
}

/**
 * @param args
 */
public static void main(String[] args) {
    new TestButton();

}

و}

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top