Поэтому я пытаюсь использовать MVC (модель, представление, контроллер) для форматирования моего кода и при попытке добавить представление к реальному приложению. Я получаю сообщение об ошибке «java.lang.IllegalArgumentException: добавление окно в контейнер на java.awt.Container.checkNotAWindow на java.awt.Container.addImpl на java.awt.Container.add " Хотя я знаю, в чем ошибка, я понятия не имею, что мне делать (не использовать MVC или найти какую-то работу), и будет признательна за любую помощь. Ниже я буду иметь код двух классов.Ошибка IllegalArgumentException
Вот где приложение запускается из:
import javax.swing.*;
import java.awt.*;
/**
* Write a description of class FencingApplication here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Application
{
public static void main(String[] args){
InputView view = new InputView();
InputModel model = new InputModel();
InputController ctrl = new InputController(view, model);
JFrame window = new JFrame("");
window.setSize(500, 600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = new Container();
c.setLayout(new BorderLayout());
c.add(view, BorderLayout.CENTER);
JButton btList = new JButton("List");
JButton btPools = new JButton("Pools");
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(1, 2));
buttonPanel.add(btList);
buttonPanel.add(btPools);
c.add(buttonPanel, BorderLayout.NORTH);
btList.addActionListener(ctrl);//where is the action performed method defined
btPools.addActionListener(ctrl);
window.setVisible(true);
}
}
А вот класс вид:
import javax.swing.*; //Jframe/JButton/JLabel/etc
import java.awt.*; //container
import java.util.*;
/**
* Write a description of class InputView here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class InputView extends JFrame implements Observer
{
JLabel lbPaste = new JLabel("Please paste the seeding here.");
JTextArea taPaste = new JTextArea();
JButton btPools = new JButton("Pools");
JLabel lbNum = new JLabel("Please input the number of pools you want to have.");
JTextField tfNum = new JTextField();
public InputView()
{
JPanel numPanel = new JPanel();
numPanel.setLayout(new BorderLayout());
numPanel.add(lbNum, BorderLayout.NORTH);
numPanel.add(tfNum, BorderLayout.CENTER);
JPanel pastePanel = new JPanel();
pastePanel.setLayout(new BorderLayout());
pastePanel.add(lbPaste, BorderLayout.NORTH);
pastePanel.add(new JScrollPane(taPaste), BorderLayout.CENTER);
Container c = getContentPane();
c.setLayout(new GridLayout(2, 1));
c.add(numPanel);
c.add(pastePanel);
setTitle("Pools");
setSize(350, 500);//width then height
setVisible(true);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void update(Observable obs, Object obj)
{
}
}
Заранее спасибо за любую помощь!