gpt4 book ai didi

java - 如何在不关闭主程序的情况下关闭jframe?

转载 作者:行者123 更新时间:2023-12-02 07:51:43 25 4
gpt4 key购买 nike

我设计了java桌面应用程序在该应用程序中,当我按下按钮时显示了另一个绘制树的 Jframe但是当我关闭 Jframe 时,整个操作就关闭了但我只想关闭 Jfarme 我该怎么办?这是 jframe 代码:

public  class DrawTree extends JFrame{
public int XDIM, YDIM;
public Graphics display;

@Override
public void paint(Graphics g) {} // override method

// constructor sets window dimensions
public DrawTree(int x, int y)
{
XDIM = x; YDIM = y;
this.setBounds(0,0,XDIM,YDIM);
this.setVisible(false);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
display = this.getGraphics();
// draw static background as a black rectangle
display.setColor(Color.black);
display.fillRect(0,0,x,y);
display.setColor(Color.red);
try{Thread.sleep(500);} catch(Exception e) {} // Synch with system
} // drawingwindow


public static int depth(BinaryNode N) // find max depth of tree
{
if (N==null) return 0;
int l = depth(N.left);
int r = depth(N.right);
if (l>r) return l+1; else return r+1;
}

// internal vars used by drawtree routines:
private int bheight = 50; // branch height
private int yoff = 30; // static y-offset

// l is level, lb,rb are the bounds (position of left and right child)
private void drawnode(BinaryNode N,int l, int lb, int rb)
{
if (N==null) return;
try{Thread.sleep(100);} catch(Exception e) {} // slow down
display.setColor(Color.green);
display.fillOval(((lb+rb)/2)-10,yoff+(l*bheight),20,20);
display.setColor(Color.red);
display.drawString(N.element+"",((lb+rb)/2)-5,yoff+15+(l*bheight));
display.setColor(Color.blue); // draw branches
if (N.left!=null)
{
display.drawLine((lb+rb)/2,yoff+10+(l*bheight),((3*lb+rb)/4),yoff+(l*bheight+bheight));
drawnode(N.left,l+1,lb,(lb+rb)/2);
}
if (N.right!=null)
{
display.drawLine((lb+rb)/2,yoff+10+(l*bheight),((3*rb+lb)/4),yoff+(l*bheight+bheight));
drawnode(N.right,l+1,(lb+rb)/2,rb);
}
} // drawnode

public void drawtree(BinaryNode T)
{
if (T==null) return;
int d = depth(T);
bheight = (YDIM/d);
display.setColor(Color.white);
display.fillRect(0,0,XDIM,YDIM); // clear background
drawnode(T,0,0,XDIM);
}}

还有一个问题

当我从树类中新建一个对象时,我想在所有按钮代码中访问该对象那么我应该在哪里定义它,或者更好地说,我应该如何定义可以在我的所有代码中访问的对象??

最佳答案

您应该将默认关闭操作设置为 HIDE_ON_CLOSE

  this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

按照建议:请注意,使用 DISPOSE_ON_CLOSE,如果不是最后一个打开的 JFrame,您仍然可以保持程序运行:(摘自javadoc)注意:当 Java 虚拟机 (VM) 内的最后一个可显示窗口被处理后,VM 可能会终止。有关详细信息,请参阅 AWT 线程问题。

关于java - 如何在不关闭主程序的情况下关闭jframe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10146804/

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