Как добавить пользовательский компонент в JFrame? - PullRequest
0 голосов
/ 26 марта 2019

У меня проблемы с добавлением нового объекта (из моего пользовательского класса TemplatesList) в JFrame. Я добавил объект Picture в JFrame раньше, и это прекрасно работает. Но когда я хочу добавить объект своего собственного класса, он по какой-то причине возвращает ошибку. Можете ли вы помочь мне с выявлением проблемы? Я бы оценил.

Ошибка говорит: cannot resolved method add(lista), когда я пытаюсь добавить это:

 TemplatesList lista = new TemplatesList();
 frame.add(lista);

вот код:

    import javax.swing.*;
    import java.awt.Color;
    import java.awt.FlowLayout;
    import javax.swing.JList;

    public class ChoosingPage
    {
    static JFrame frame;
    JLabel choose;

    public ChoosingPage ()
    {
        frame = new JFrame ("Primark's templates");
        frame.setSize(500,500);
        frame.setLocation(50,50);
        frame.setLayout(new FlowLayout(FlowLayout.CENTER));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //frame.setBackground(Color.WHITE);
        frame.getContentPane().setBackground(Color.WHITE);

        choose = new JLabel("choose your template");
        choose.setSize(choose.getPreferredSize());
        //choose.setLocation(20,20);
        frame.add(choose);

        Picture zdjecie = new Picture();
        frame.add(zdjecie);

        TemplatesList lista = new TemplatesList();
        frame.add(lista);




        frame.setVisible(true);
    }

    public static void main (String [] args)
    {
        new ChoosingPage();
    }
    }

и класс, который я хочу добавить в JFrame:

import javax.swing.*;

public class TemplatesList
{
    private JComboBox faceCombo;

    public TemplatesList()
    {
        faceCombo = new JComboBox();
        faceCombo.setEditable(false);
        faceCombo.addItem("change request");
        faceCombo.addItem("Emergancy Change request");
        faceCombo.addItem("problem request");
        faceCombo.addItem("problem handover");

    }
}

1 Ответ

1 голос
/ 26 марта 2019

Вы можете добавлять только объекты типа Component в JFrame.Ваш класс расширяется Object (по умолчанию).Поэтому вы должны изменить свой класс так, чтобы он выглядел как

import javax.swing.*;

public class TemplatesList extends JComboBox<String>
{

    public TemplatesList()
    {
        setEditable(false);
        addItem("change request");
        addItem("Emergancy Change request");
        addItem("problem request");
        addItem("problem handover");

    }
}

, так как JComboBox расширяется Component.И так, расширяя JComboBox, ваш TemplatesList класс также расширяет Component.

Тогда вы можете использовать:

TemplatesList lista = new TemplatesList();
frame.add(lista);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...