Итак, я получил сцепление с основными шаблонами MVC в java, используя метод Observer/Observable. Теперь, в интересах сохранения чистоты и удобочитаемости, я хотел бы указать некоторые указатели, прежде чем я перейду к рассмотрению того, как хорошо организовать мой просмотр, поскольку именно здесь мои классы больше всего заполняются. Нам сказали в школе, чтобы сохранить размер файла в классе ниже 20kb, чтобы он был читабельным и более легким для обслуживания.Как можно очистить и упорядочить мой вид (MVC) лучше
Вот мое мнение:
package view;
import model.*;
import helper.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Observable;
import java.util.Observer;
import net.miginfocom.swing.MigLayout;
public class View extends JFrame implements Observer
{
private Model model;
private JPanel left = new JPanel(new MigLayout());
private JPanel center = new JPanel(new MigLayout());
private JPanel right = new JPanel(new MigLayout());
private void setConstraints()
{
this.left.setMinimumSize(new Dimension(252, 540));
this.left.setMaximumSize(new Dimension(252, 37500));
this.center.setMinimumSize(new Dimension(298, 540));
this.right.setMinimumSize(new Dimension(250, 540));
this.right.setMaximumSize(new Dimension(250, 37500));
}
//Left panel contents
private Towers box = new Towers();
private Modules tree = new Modules();
private JPanel setupLeft()
{
this.left.add(this.box, "growx, pushx, wrap");
this.left.add(new JScrollPane(this.tree), "grow, push");
return this.left;
}
//Center panel contents
private Browser browser = new Browser();
private JPanel setupCenter()
{
this.center.add(new JScrollPane(this.browser), "grow, push");
return this.center;
}
//Right panel contents
private JLabel tower = new JLabel("No tower selected.");
private JLabel cap = new JLabel("Capacitor");
private JLabel cpu = new JLabel("CPU");
private JLabel shield = new JLabel("0");
private JLabel armor = new JLabel("0");
private JLabel em = new JLabel("0.0");
private JLabel th = new JLabel("0.0");
private JLabel kn = new JLabel("0.0");
private JLabel ex = new JLabel("0.0");
private JPanel setupRight()
{
this.right.add(this.tower, "span, wrap");
this.right.add(this.cap, "span, wrap");
this.right.add(this.cpu, "span, wrap");
this.right.add(this.shield, "span, wrap");
this.right.add(this.armor, "span, wrap");
this.right.add(this.em, "span, wrap");
this.right.add(this.th, "span, wrap");
this.right.add(this.kn, "span, wrap");
this.right.add(this.ex, "span, wrap");
return this.right;
}
public View(Model ui_model)
{
model = ui_model;
this.setTitle("MVC Experiment 6");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
this.setMinimumSize(new Dimension(800, 600));
this.setLayout(new MigLayout());
this.setConstraints();
this.add(this.setupLeft(), "dock west");
this.add(this.setupCenter(), "dock center");
this.add(this.setupRight(), "dock east");
}
//Left panel contents - Listeners and methods for addressing JComponents
public void xTowersBrowser(ActionListener event)
{
this.box.addActionListener(event);
}
public void xModulesBrowser(MouseListener event)
{
this.tree.addMouseListener(event);
}
public Towers getTowersBrowser()
{
return this.box;
}
public Modules getModulesBrowser()
{
return this.tree;
}
//Left panel - END
//Center panel - components :: listeners and methods
public void xBrowser(MouseListener event)
{
this.browser.addMouseListener(event);
}
public Browser getBrowser()
{
return this.browser;
}
//Center panel - END
public void update(Observable o, Object arg)
{
}
}
Любые предложения о том, чтобы отделить в новых классах или как минимизировать код полезны. Это просто вырезание из моего основного класса View, по-прежнему остается много JComponents, поэтому он станет более беспорядочным.
Это, вероятно, было бы более уместным на [codereview] (http://codereview.stackexchange.com). Вам не нужно использовать 'this' всюду, а на Java вы не ставите открывающиеся фигурные скобки в новую строку. – toto2
Программирование пользовательского интерфейса печально известно для создания очень длинных файлов. – toto2
oh wow я не знал о codereview, спасибо за это. Я понимаю, что эта «эта» часть - это просто старая привычка из PHP-дней и т. Д. –