gpt4 book ai didi

java - 关闭内部包含 JInternalFrame 的 JtabbedPane

转载 作者:行者123 更新时间:2023-12-02 04:34:14 24 4
gpt4 key购买 nike

当我单击此表单内的按钮时,如何关闭包含 JInternalFrameJTabbedPane

我的项目有 3 个 JForms、1 个 TabbedPane、1 个 JInternalFrame 和 1 个主窗口(用于注册数据)。为了创建我的 JTabbedPanes,我使用了 addTab() 方法,并且从该表单中我有一个关闭按钮,该按钮调用另一个窗口(主注册表),我使用了 dispose()setVisible(false) 方法,但它们不执行任何操作。

示例(有 3 个类 -Administrador、-MenuPrincipal、-ventanaRegistro):

首先类 JFrame 并在其顶部放置 JTabbedPane(这是我创建选项卡的位置)

public class MenuPrincipal extends javax.swing.JFrame 
{

Administrador ventanaAdministrador = new Administrador();

void showTabs()
{
JTabbedPane.addTab("Administrador", ventanaAdministrador);
}

public MenuPrincipal()
{
initComponents();
showTabs();
}
}

带有单个按钮的第二类 JInternalFrame

public class Administrador extends javax.swing.JInternalFrame 
{
void showAdminWindow()
{
ventanaRegistro ventanaRegistro = new ventanaRegistro();
ventanaRegistro.setVisible(true);
}

void closeThisWindow()
{
this.dispose();
}
public Administrador()
{
initComponents();
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
showAdminWindow();
closeThisWindow();
}
}

第三类简单的 JFrame。这只是注册数据的代码。

真正的问题是我的方法 closeThisWindow() 没有关闭第二个 Jtabbed 窗口,我想在单击按钮(位于 JTabbedPane 上)时使第三类可见,第二类不可见/关闭它。

最佳答案

看看下面的代码是否符合您的预期。如果没有,请详细说明,以便我改进我的答案。

import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.WindowConstants;


public class MenuPrincipal extends javax.swing.JPanel {

Administrador ventanaAdministrador = new Administrador();

public MenuPrincipal()

{
setPreferredSize(new Dimension(290, 200));

JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
ventanaAdministrador.setPreferredSize(new Dimension(350, 100));
tabbedPane.addTab("Admin", ventanaAdministrador);
tabbedPane.addTab("2nd Tab", new JPanel());
add(tabbedPane);
}


/**
* @param args
*/
public static void main(String[] args) {

JFrame testFrame = new JFrame("Main Test Window");
testFrame.setDefaultCloseOperation(WindowConstants.
DISPOSE_ON_CLOSE);
testFrame.setPreferredSize(new Dimension(450, 350));
MenuPrincipal menuP = new MenuPrincipal();
testFrame.getContentPane().add(menuP);

testFrame.pack();
testFrame.setVisible(true);

}
}

并且:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

public class Administrador extends javax.swing.JInternalFrame {

void showAdminWindow()
{
JFrame ventanaRegistro = new JFrame("Admin Window");
ventanaRegistro.
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

ventanaRegistro.setPreferredSize(new Dimension(350, 200));
ventanaRegistro.pack();
ventanaRegistro.setVisible(true);
}

void closeThisWindow()
{
Window window = SwingUtilities.getWindowAncestor(this);
window.dispose();
}

public Administrador()
{

JPanel panel = new JPanel();
getContentPane().add(panel, BorderLayout.NORTH);

JButton closeWindowBttn = new JButton("Close Window and open a new one");
closeWindowBttn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
closeWindowActionPerformed();
}
});
panel.add(closeWindowBttn);
}

private void closeWindowActionPerformed() {
showAdminWindow();
closeThisWindow();

}

}

关于java - 关闭内部包含 JInternalFrame 的 JtabbedPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31033487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com