Also versuche ich MVC (Modell, Ansicht, Controller) zu verwenden, um meinen Code zu formatieren, und wenn ich versuche, die Ansicht der tatsächlichen Anwendung hinzuzufügen, bekomme ich einen Fehler, der besagt, dass "java.lang.IllegalArgumentException: a Fenster in einen Behälter bei java.awt.Container.checkNotAWindow bei java.awt.Container.addImpl bei java.awt.Container.add“ Während ich weiß, was der Fehler ich habe keine Ahnung, was ich tun soll (nicht Verwenden Sie MVC oder finden Sie eine Art von Work-Around) und würde jede Hilfe zu schätzen wissen. Unten werde ich den Code der beiden Klassen haben.IllegalArgumentException Fehler
Hier wird, in dem die Anwendung ausgeführt werden von:
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);
}
}
Und hier ist die Ansichtsklasse:
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)
{
}
}
Vielen Dank im Voraus für jede Hilfe!