0

このプログラムにはさまざまな画面があります (JPanels で表されます)。画面が開くたびに、そのパネルを再構築し、JFrame.

これで、初めてパネルを作成して (常に同じ機能)、ボタンを押すと、それに添付されたコードが実行されます。画面を再構築するeventSourceと、 が実際の と等しくなることはありませんeventSource

コードを参照してください:

public class NewUserScreen extends JPanel implements MouseListener{
    //SButton inherits from Component
    SButton sb;

    ...

    public void SetFields(){
        removeAll();
        revalidate();
        repaint();

        ...     

        sb = new SButton(new Point(282, 295), "Save");
        sb.addMouseListener(this);
        add(sb);

        ...
    }

    ...

    @Override
    public void mouseReleased(MouseEvent arg0) {
        if(arg0.getSource().equals(sb)){
            DBManager.addUser(...);
        }else{
            //So after the 2nd build, it will always run this code :(
            ScreenManager.OpenAdminS();
        }

    }
}
4

1 に答える 1

2
  1. このプログラムには、さまざまな画面 (JPanels で表されます) があります。画面が開くたびに、そのパネルを再構築し、JFrame に配置します。

  2. これで、初めてパネルを作成して (常に同じ機能)、ボタンを押すと、それに添付されたコードが実行されます。画面を再構築すると、eventSource が実際の eventSource と等しくなることはありません。

    • 親(あなたの場合)のために、最後のコード行として1回呼び出す必要が(re)validate()あります(コンテナへのすべての変更が完了した後)repaint()JFrame
于 2013-01-08T14:48:00.600 に答える