سؤال

لدي زر على JFrame أنه عند النقر فوق أريد أن يكون مربع حوار منبثق مع مناطق نصية متعددة لإدخال المستخدم. لقد كنت أبحث في كل مكان لمحاولة معرفة كيفية القيام بذلك ولكني استمر في الحصول على المزيد من الخلط. هل أستطيع مساعدتك؟

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

المحلول

إذا لم تكن بحاجة إلى الكثير في طريق السلوك المخصص، فإن Joptionpane هو مدخر وقت جيد. يعتني بوضع وتوعية خيارات موافق / إلغاء الخيارات، وهي وسيلة سريعة وقذرة لإظهار مربع حوار مخصص دون الحاجة إلى تحديد الفصول الخاصة بك. معظم الوقت تعد المعلمة "الرسالة" في Joptionpane سلسلة، ولكن يمكنك تمرير jComponent أو مجموعة من jcomponents أيضا.

مثال:

JTextField firstName = new JTextField();
JTextField lastName = new JTextField();
JPasswordField password = new JPasswordField();
final JComponent[] inputs = new JComponent[] {
        new JLabel("First"),
        firstName,
        new JLabel("Last"),
        lastName,
        new JLabel("Password"),
        password
};
int result = JOptionPane.showConfirmDialog(null, inputs, "My custom dialog", JOptionPane.PLAIN_MESSAGE);
if (result == JOptionPane.OK_OPTION) {
    System.out.println("You entered " +
            firstName.getText() + ", " +
            lastName.getText() + ", " +
            password.getText());
} else {
    System.out.println("User canceled / closed the dialog, result = " + result);
}

نصائح أخرى

جرب هذه الفئة البسيطة لتخصيص مربع حوار تروقك:

import java.util.ArrayList;
import java.util.List;

import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JRootPane;

public class CustomDialog
{
    private List<JComponent> components;

    private String title;
    private int messageType;
    private JRootPane rootPane;
    private String[] options;
    private int optionIndex;

    public CustomDialog()
    {
        components = new ArrayList<>();

        setTitle("Custom dialog");
        setMessageType(JOptionPane.PLAIN_MESSAGE);
        setRootPane(null);
        setOptions(new String[] { "OK", "Cancel" });
        setOptionSelection(0);
    }

    public void setTitle(String title)
    {
        this.title = title;
    }

    public void setMessageType(int messageType)
    {
        this.messageType = messageType;
    }

    public void addComponent(JComponent component)
    {
        components.add(component);
    }

    public void addMessageText(String messageText)
    {
        JLabel label = new JLabel("<html>" + messageText + "</html>");

        components.add(label);
    }

    public void setRootPane(JRootPane rootPane)
    {
        this.rootPane = rootPane;
    }

    public void setOptions(String[] options)
    {
        this.options = options;
    }

    public void setOptionSelection(int optionIndex)
    {
        this.optionIndex = optionIndex;
    }

    public int show()
    {
        int optionType = JOptionPane.OK_CANCEL_OPTION;
        Object optionSelection = null;

        if(options.length != 0)
        {
            optionSelection = options[optionIndex];
        }

        int selection = JOptionPane.showOptionDialog(rootPane,
                components.toArray(), title, optionType, messageType, null,
                options, optionSelection);

        return selection;
    }

    public static String getLineBreak()
    {
        return "<br>";
    }
}

هذا الدرس من البرنامج التعليمي Java يشرح كل مكون أرجغ بالتفصيل، مع أمثلة وروابط API.

إذا كنت تستخدم netbeans ide. (أحدث إصدار في هذا الوقت 6.5.1)، يمكنك استخدامه لإنشاء تطبيق أساسي GUI Java باستخدام File-> مشروع جديد واختر فئة Java ثم تطبيق Java Desktop.

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

سوف تكون قادرا على تحرير مربع الحوار بصريا. احذف العناصر الموجودة التي توجد بها وإضافة بعض مجالات النص. العب معها وأعود مع المزيد من الأسئلة إذا انتقلت :)

حسنا، يمكنك إنشاء Jdialog بشكل أساسي، أضف مكونات النص الخاصة بك وجعلها مرئية. قد يساعد ذلك إذا كنت تضييق قليلا في وجود مشكلة في تواجه مشكلة.

لقد أنشأت API حوار مخصص. تحقق من ذلك هنا https://github.com/markmyword03/customdialog.. وبعد وهو يدعم مربع الرسالة والتأكيد. سيتم تنفيذ مربع حوار الإدخال والخيار تماما في Joptionpane قريبا.

نموذج مربع حوار خطأ عينة من CustomDialog API:رسالة خطأ CustomDialog.

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