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