如果我直接在构造函数中添加面板,它可以正常工作,但在控制器中则不行。当我在菜单上点击“Reservas”或“Contabilidad”选项之一时,我想更改显示的面板并查看其他内容。
这是我的观点
public class Vista extends JFrame{
private JMenuBar barraMenu=new JMenuBar();
private JMenu menu=new JMenu("Opciones");
private JMenuItem reservas=new JMenuItem("Reservas");
private JMenuItem contabilidad=new JMenuItem("Contabilidad");
private JMenuItem salir=new JMenuItem("Salir");
private Controlador controlador;
private Reservas panelReservas=new Reservas();
private Contabilidad panelContabilidad=new Contabilidad();
public Vista(Controlador controlador){
super("Reservas Hotel");
this.controlador=controlador;
this.setLayout(new BorderLayout());
this.setSize(600,500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setJMenuBar(barraMenu);
this.crearMenu();
this.anadirEscuchadores();
this.setVisible(true);
}
private void crearMenu() {
menu.add(reservas);
menu.add(contabilidad);
menu.add(salir);
barraMenu.add(menu);
}
private void anadirEscuchadores() {
reservas.addActionListener(controlador);
contabilidad.addActionListener(controlador);
salir.addActionListener(controlador);
}
public void cambiarAReservas() {
this.remove(panelContabilidad);
this.add(panelReservas, BorderLayout.CENTER);
}
public void cambiarAContabilidad() {
this.remove(panelReservas);
this.add(panelContabilidad, BorderLayout.CENTER);
}
}
这是我的控制器
public class Controlador implements ActionListener{
private Vista vista;
private GestorBD modelo;
public Controlador(){
vista=new Vista(this);
modelo=new GestorBD();
}
@Override
public void actionPerformed(ActionEvent evento) {
switch(evento.getActionCommand()){
case "Reservas":
vista.cambiarAReservas();
break;
case "Contabilidad":
vista.cambiarAContabilidad();
break;
case "Salir":
System.exit(0);
break;
}
}
}
panel对象只有一个jlabel,其中有一个hello要测试
我回答自己。包()不见了。但是我有一个疑问,为什么重画不起作用,而包起作用呢?
public void cambiarAReservas() {
this.remove(panelContabilidad);
this.add(panelReservas, BorderLayout.CENTER);
this.pack();
}
public void cambiarAContabilidad() {
this.remove(panelReservas);
this.add(panelContabilidad, BorderLayout.CENTER);
this.pack();
}
包装呈现值;导入java。util。扫描仪; 公共类PresentValue{ }问题是写一个方法presentValue来执行此计算。该方法应接受未来值、年利率和年数作为参数。它应该返回现值,即您今天需要存入的金额。在一个程序中演示该方法,该程序允许用户试验公式项的不同值。 这里是公式P=F/(1r)^2
我正在尝试构建一个简单的Web应用程序,它接受大量的二进制输入,并计算一个布尔公式,然后输出。我做错了什么? null null
问题内容: 我有一个小问题。我想要一个可以上传和显示图像的Django应用。目前,它可以上传图片,但我无法显示该图片。 因此,例如{{comment.photo}}将打印出path 。但我想在屏幕上看到该图像。不是路径。如何将图像打印到屏幕上? 这里有一些信息可能会有所帮助。 models.py views.py home.html form.html 问题答案: 有关如何正确上传图像的信息,请参
你为什么想要加入我们公司?,这是一道非常高频的互联网大厂前端面试题,但是很多同学在面试时候都回答不好。老规矩,点赞收藏,点点关注支持一下,给我一分钟,理想哥教大家该怎么满分回答这个问题。 虽然大部分同学真实的原因可能是你们公司给的钱多,你们约我面试的,我为了谋生,我想跳个槽等等。但是呢,真实当你在面试的时候是不能这么回答的,你需要让自己的回答更加的高大上一些。 理想哥建议大家可以从下面几个方向去回
本文向大家介绍为什么HTML5里面我们不需要DTD?相关面试题,主要包含被问及为什么HTML5里面我们不需要DTD?时的应答技巧和注意事项,需要的朋友参考一下 先说一下什么是DTD或者说我们为什么在html5之前需要使用DTD 下面是DTD的作用: 通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。 通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。 应用程
我试图使一个客户端-服务器包成一个应用程序。因此,当应用程序打开时,服务器会自动进入待机/监听模式。问题是当运行服务器套接字时,它直到之后才显示gui。我希望gui和服务器套接字同时发生。 我已经注释掉了代码行,它按照预期工作,直到 我读过关于线程来解决这个问题的文章,但是我看到的例子都没有给出足够清晰的答案。我对python和编程还是相当陌生的。谢啦