簡體   English   中英

執行的操作 java 不運行?

[英]action performed java dont run?

早上好,我對 java 有點陌生,我正在嘗試創建一個動態加載的圖形應用程序,該應用程序有一個帶有面板的框架,該面板會根據按下的按鈕而變化,問題是當我創建一個額外的視圖和面板被改變程序沒有進入最后創建視圖的控制器的actionPerformed。

這是我的代碼:

這是一個包含應用程序基本框架的控制器和一個在您按下 btnInventory 按鈕時會動態變化的面板。

package pointofsale.controllers;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import pointofsale.views.HomeView;

/**
 *
 * @author dragonyte
 */
public class HomeController extends Controller implements ActionListener{

    HomeView view;

    public HomeController() {
        this.view = new HomeView();
        this.view.setResizable(false);
        this.view.setVisible(true);
        
        this.view.btnInventory.addActionListener(this);
    }
    
    
    @Override
    public void actionPerformed(ActionEvent ae) {
        if(ae.getSource()==this.view.btnInventory){
            new InventoryController(this.view.pnDinamic);
        }
    }
    
}

這是庫存控制器:

package pointofsale.controllers;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import pointofsale.views.inventory.InventoryView;

/**
 *
 * @author dragonyte
 */
public class InventoryController extends Controller implements ActionListener{
    
    private InventoryView view;

    public InventoryController(JPanel panel) {
        this.view = new InventoryView();
        
        InventoryMenuController a = new InventoryMenuController(panel);
        this.addViewWhitoutRefresh(this.view, panel);
        
        this.view.btnPrint.addActionListener(this);
    }

    
    
    @Override
    public void actionPerformed(ActionEvent ae) {
        if(ae.getSource()==this.view.btnPrint){
            new NewUnitController();
        }
    } 
}

按下打印按鈕調用創建模式窗口的控制器,這是控制器:

package pointofsale.controllers.modal;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import pointofsale.views.modal.NewUnitView;

/**
 *
 * @author dragonyte
 */
public class NewUnitController implements ActionListener{
    
    private NewUnitView view;

    public NewUnitController() {
        
        this.view = new NewUnitView(null, true);
        this.view.setResizable(false);
        this.view.setVisible(true);
        
        this.view.btnSave.addActionListener(this);
        
        
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
        Object source = ae.getSource();
        if(source==this.view.btnSave){
            System.out.print("ok");
        }      
    }
}

到這里它可以正常工作改變屏幕並創建模態窗口問題是當按下模態窗口的 btnSave 按鈕時它沒有進入類的 actionPerformed 因此它不打印“ok”

我已經嘗試把屏幕的所有者,但它沒有工作。 並嘗試使用 JPanel 而不是模式窗口。 我注意到它發生在加載的第三個控制器上。 並且控制台不會打印任何錯誤或異常。

我很感激幫助。

我已經設法解決了,我只需要在使模態窗口可見之前定義 addActionListener 事件:

public class NewUnitController implements ActionListener{
    
    private NewUnitView view;

    public NewUnitController() {
        
        this.view = new NewUnitView(null, true);
        this.view.setResizable(false);
        //definded before -----------
        this.view.btnSave.addActionListener(this);

        this.view.setVisible(true);
        
        
        
        
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
        Object source = ae.getSource();
        if(source==this.view.btnSave){
            System.out.print("ok");
        }      
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM