Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过按下按钮加载面板_Java_Swing - Fatal编程技术网

Java 通过按下按钮加载面板

Java 通过按下按钮加载面板,java,swing,Java,Swing,我有两个小组课,PannelloM和PannelloM2 最初,我在JFrame中添加了PannelloM2的一个实例。 我希望当我按下时,“new..”被加载到JFrame PannelloM而不是PannelloM2上。我怎样才能做到这一点 问题是,我在panel类中有按钮侦听器,因此无法将面板本身添加到框架中 多谢各位 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.rmi.*;

我有两个小组课,PannelloM和PannelloM2

最初,我在JFrame中添加了PannelloM2的一个实例。 我希望当我按下时,“new..”被加载到JFrame PannelloM而不是PannelloM2上。我怎样才能做到这一点

问题是,我在panel类中有按钮侦听器,因此无法将面板本身添加到框架中

多谢各位

import javax.swing.*; 
import java.awt.*;
import java.awt.event.*;
import java.rmi.*;
import java.util.*;

 class ProvaMail{
 public static void main(String[] args){
  EmailMonitor em = new EmailMonitor();


  em.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  em.setVisible(true);
  }

  }

class EmailMonitor extends JFrame{
private PannelloM pannelloM;
private PannelloM2 pannelloM2;
public EmailMonitor(){
    ini();

    pannelloM= new PannelloM();
    pannelloM2= new PannelloM2();
    add(pannelloM2);
    }


    private void ini(){
   // prende la dimensione dello schermo
   Toolkit kit = Toolkit.getDefaultToolkit();
   Dimension screenSize = kit.getScreenSize();
   int screenHeight = screenSize.height;
  int screenWidth = screenSize.width;

  //centra il frame nello schermo
  setSize(screenWidth / 4, screenHeight / 2);
  setLocation(screenWidth / 4, screenHeight / 4);

  //imposta il titolo e il dimensionamento non automatico
  setTitle("Email Monitor");
  setResizable(false);
}
}


class PannelloM2 extends JPanel implements ActionListener{
private JPanel panel1;  
private JPanel panel4;  

JButton nuovo;
JButton leggi;
JButton elimina;

public PannelloM2(){
    iniP();
}

private void iniP(){

    setLayout(new BorderLayout());

    panel1 = new JPanel();
    panel1.setLayout(new BorderLayout());
    JLabel label0 = new JLabel("Posta in arrivo:");
    panel1.add(label0, BorderLayout.NORTH);
    add(panel1, BorderLayout.NORTH);

    panel4 = new JPanel();
    panel4.setLayout(new BorderLayout());
    nuovo = new JButton("Nuovo..");
    leggi = new JButton("Leggi..");
    elimina = new JButton("Elimina..");
    panel4.add(nuovo,BorderLayout.NORTH);
    panel4.add(leggi,BorderLayout.CENTER);
    panel4.add(elimina,BorderLayout.SOUTH);
    add(panel4, BorderLayout.SOUTH);


    //registro i componenti al listener
    nuovo.addActionListener(this); 
    leggi.addActionListener(this); 
    elimina.addActionListener(this); 
}

    public void actionPerformed(ActionEvent event) 
    {
   String command = event.getActionCommand();

   if(command.equals("Nuovo..")) {  }

   else if(command.equals("Leggi..")) {

   }

   else if(command.equals("Elimina..")) {

   }
   }   
   }

   class PannelloM extends JPanel {
    private JPanel panel1; 
    private JPanel panel2; 
    private JPanel panel3; 
    private JPanel panel4;  
    private JPanel panel5;  


JButton arrivo; 
JButton rispondi; 
JButton rispondiTutti; 
JButton inoltra;

JButton after;  
JTextArea text1;
JTextField text2;
JTextField text3;


  public PannelloM(){
    iniP();
  }

   private void iniP(){
    setLayout(new BorderLayout());
    panel1 = new JPanel();
    panel1.setLayout(new BorderLayout());
    JLabel label0 = new JLabel("Destinatari:");
    panel1.add(label0, BorderLayout.NORTH);
    text2 = new JTextField("",10);
    panel1.add(text2, BorderLayout.CENTER);


    panel2 = new JPanel();
    panel2.setLayout(new BorderLayout());
    JLabel label1 = new JLabel("Oggetto:");
    panel2.add(label1, BorderLayout.NORTH);
    text3 = new JTextField("",20);
    panel2.add(text3, BorderLayout.CENTER);

    panel1.add(panel2, BorderLayout.SOUTH);

    add(panel1, BorderLayout.NORTH);

    //imposto terzo pannello
    panel3 = new JPanel();
    panel3.setLayout(new BorderLayout());
    JLabel label3 = new JLabel("Testo:");
    panel3.add(label3, BorderLayout.NORTH);
    text1 = new JTextArea(5,20);

    panel3.add(text1, BorderLayout.CENTER);

    add(panel3, BorderLayout.CENTER);

    //imposto quarto pannello
    panel4 = new JPanel();
    panel4.setLayout(new BorderLayout());
    arrivo = new JButton("Posta in arrivo..");
    rispondi = new JButton("Rispondi..");
    rispondiTutti = new JButton("Rispondi a tutti..");
    inoltra = new JButton("Inoltra..");
    panel4.add(arrivo,BorderLayout.NORTH);
    panel4.add(rispondi,BorderLayout.CENTER);

    //imposto quinto pannello dentro il panel 4
    panel5 = new JPanel();
    panel5.setLayout(new BorderLayout());
    panel5.add(rispondiTutti,BorderLayout.NORTH);
    panel5.add(inoltra,BorderLayout.SOUTH);
    panel4.add(panel5,BorderLayout.SOUTH);
    add(panel4,BorderLayout.SOUTH);  

    //registro i componenti al listener
    arrivo.addActionListener(this);
    rispondi.addActionListener(this);
    rispondiTutti.addActionListener(this);
    inoltra.addActionListener(this);

    }


   }

从面板PannelloM和PannelloM2中删除
ActionListener
,并在
EmailMonitor中添加
ActionListener

public class EmailMonitor extends JFrame implements ActionListener {
//registro i componenti al listener
nuovo.addActionListener(em);
leggi.addActionListener(em);
elimina.addActionListener(em);
然后实现抽象方法
actionPerformed
我将处理将面板从
pannello2
更改为
panneloM

@Override
public void actionPerformed(ActionEvent event) {
    String command = event.getActionCommand();

    if (command.equals("Nuovo..")) {
        this.setContentPane(pannelloM);
        this.invalidate();
        this.validate();


    } else if (command.equals("Leggi..")) {

    } else if (command.equals("Elimina..")) {

    }
}
将按钮侦听器连接到EmailMonitor

我将在
PannelloM2
PannelloM
构造函数上创建对EmailMonitor的引用

private EmailMonitor em;

public PannelloM2(EmailMonitor em) {
    this.em = em;
    iniP();
}

然后将JPanel中的
addActionListeners
按钮更改为引用
EmailMonitor

public class EmailMonitor extends JFrame implements ActionListener {
//registro i componenti al listener
nuovo.addActionListener(em);
leggi.addActionListener(em);
elimina.addActionListener(em);

EmailMonitor这样初始化您的面板

public EmailMonitor() {
    ini();
    pannelloM = new PannelloM(this);
    pannelloM2 = new PannelloM2(this);
    add(pannelloM2);
}
1) 使用如中所示的。2) 为了更快地获得更好的帮助,请发布一个or。