제 질문에 바로 접근하십시오.Java - 대규모 GUI 프로젝트 수행
어떻게 대규모 GUI 프로젝트를합니까? 지금까지 자바에서 더 큰 GUI 프로젝트를 수행하지는 않았지만 지금은 꽤 빠르게 성장하고 꽤 커졌습니다. 그리고 지금은 짜증나고 지저분한 코드 더미가 붙어 있습니다.
나는 웹 개발 분야에서 왔습니다. MVC 프레임 워크에 익숙해 져서 프로젝트에 3 개의 패키지가 있습니다. 모델은 부울 파일이나 데이터베이스와 상호 작용하는 클래스를 유지합니다.보기는 Forms 나 GUI 및 컨트롤러에 대한 클래스를 유지합니다. 패키지 어디에 내가 내 논리의 대부분을 유지.
나는 내 논리를 분리하고 다른 클래스의 한 클래스와 리스너에서 작업을 계속하도록 말되었지만 모든 것을 연결하는 방법을 알지 못합니다.
지금까지 GUI가 실행되면 어떻게되는지에 관한 모든 메소드를 실행하는 컨트롤러 클래스가 하나 밖에 없습니다.
package pft.controller;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JTree;
import java.awt.event.*;
import javax.swing.JProgressBar;
import pft.view.Invoke_GUI;
import pft.model.Events;
import pft.model.Parse;
public class Tower_Controller {
public Tower_Controller() {
}
//Global variables
String isSelected = null;
int hasModules = 0;
int cap = 0;
int cpu = 0;
int shield = 0;
int armor = 0;
public void setName(String name){
this.isSelected = name;
}
public String getName(){
return this.isSelected;
}
public void setCap(int cap){
this.cap = cap;
}
public int getCap(){
return this.cap;
}
public void setCpu(int cpu){
this.cpu = cpu;
}
public int getCpu(){
return this.cpu;
}
public void setShield(int shield){
this.shield = shield;
}
public int getShield(){
return this.shield;
}
public void setArmor(int armor){
this.armor = armor;
}
public int getArmor(){
return this.armor;
}
public void invoke() throws IOException {
Invoke_GUI runnable = new Invoke_GUI();
final JLabel tower_name = runnable.tower_name;
final JComboBox tower_select = runnable.tower_select;
final JTree module_browser = runnable.module_browser;
final JTree selected_modules = runnable.selected_modules;
final JProgressBar cap_bar = runnable.cap_bar;
final JProgressBar cpu_bar = runnable.cpu_bar;
final JLabel em_res = runnable.em;
final JLabel th_res = runnable.thermic;
final JLabel ki_res = runnable.kinetic;
final JLabel ex_res = runnable.explosive;
setTowerName(tower_name, tower_select);
removeTower(tower_name);
runnable.setVisible(true);
}
public void removeTower(final JLabel tower_name) {
tower_name.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
if (hasModules == 1 & isSelected != null) {
Events evt = new Events();
evt.towerHasModules();
} else if (isSelected == null) {
} else {
tower_name.setText("No Control Tower selected");
isSelected = null;
}
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
});
}
public void updateVariables(String name) throws IOException{
Parse tower = new Parse();
String data[] = tower.towerData(name);
Integer x = Integer.valueOf(data[1]).intValue();
setCap(x);
}
public void setTowerName(final JLabel tower_name, final JComboBox tower_select) {
tower_select.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (isSelected != null) {
Events evt = new Events();
evt.towerSelected(isSelected);
} else {
tower_name.setText(tower_select.getSelectedItem().toString());
setName(tower_name.toString());
try {
updateVariables(tower_name.toString());
} catch (IOException ex) {
Logger.getLogger(Tower_Controller.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
}
}
튜토리얼과 작은 일반적으로 하나의 클래스 자바 GUI 그러나 하나의 클래스보다는 조금 더 큰 프로젝트를 수행하는 방법에 대한 어떠한 튜토리얼이나 예제를 수행하는 방법 예는 많이 있습니다.
사전에 모든 도움과 조언을 주셔서 감사합니다.
http://en.wikipedia.org/wiki/Mediator_pattern –
도 참조하십시오 ['MVCGame'] (http://stackoverflow.com/a/3072979/230513). – trashgod