MVC(モデル、ビュー、コントローラ)を使用してコードをフォーマットしようとしていますが、実際のアプリケーションにビューを追加しようとすると「java.lang.IllegalArgumentException:コンテナへのウィンドウ java.awt.Container.checkNotAWindow at java.awt.Container.addImpl at java.awt.Container.add " エラーが何であるか分かりますが、私は何をすべきか分かりませんMVCを使用するか、何らかの回避策を見つける)、どんな助けにも感謝しています。以下で私は2つのクラスのコードを持っていきます。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)
{
}
}
おかげでアプリケーションが実行されてからのはここ
です!