我用的Eclipse 进行Java 编程,做了一个界面。界面整体采用JSplitPane实现左右分割的布局,左半部分是JTree,右半部分采用的是CardLayout的布局,每一个部分都是一个JPanel。可以实现点击左端JTree的相应部分,看到相对应的Jpanel,并进行操作。我的问题在于,我点击整个JFrame的关闭按钮,会卡死,之后再点击任何部分都无效。
注意:this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);主界面的关闭函数我已经加了。
对于JPanel的初始化部分如下:
private void initJp() {
jp.setLayout(cl); //设置为卡片布局
jp.add(jlRoot,"Root");
jp.add(new CaDishSearch(),"ds");//相应对象待添加
jp.add(new CaTakeAway(),"cata");
jp.add(new CaAdviceView(),"av");
}
其中jp为JPanel的对象,cl为卡片布局对象具体为: CardLayout cl = new CardLayout();
而CaDishSearch(),CaTakeAway(),CaAdviceView(),都是继承自JPanel的对象,在同一个包里面加以定义了。
求教遇到或了解这一问题的高手指导,高级不仅。javaeclipse关闭Frame
注意:this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);主界面的关闭函数我已经加了。
对于JPanel的初始化部分如下:
private void initJp() {
jp.setLayout(cl); //设置为卡片布局
jp.add(jlRoot,"Root");
jp.add(new CaDishSearch(),"ds");//相应对象待添加
jp.add(new CaTakeAway(),"cata");
jp.add(new CaAdviceView(),"av");
}
其中jp为JPanel的对象,cl为卡片布局对象具体为: CardLayout cl = new CardLayout();
而CaDishSearch(),CaTakeAway(),CaAdviceView(),都是继承自JPanel的对象,在同一个包里面加以定义了。
求教遇到或了解这一问题的高手指导,高级不仅。javaeclipse关闭Frame
解决方案 »
- 急 急 请教关于JPA与hibernate的问题 在线等!!!!!
- java list里面保存的是一个个数组,但数组里面中文为乱码,高分求救
- Hibernate执行两次相同sql操作怎么解决
- 邮件发送失败的提示信息,是什么原因?
- jsp连接MySql数据库问题总结
- Struts2标签<s:token/>页面刷新导致数据重复提交的问题
- 请教一个日期格式转换问题
- 创建DOM树的时候出现以下异常,如何解决!
- jbuilder中的Tools->Configure Servers的对话框中没有JBoss 3.X,如何是好?
- 一个初学者的蠢问题,谢谢
- 项目运行正常但是服务器一直打印错误
- JCheckBox使用小示例
/**
* 餐厅管理系统管理员所见视图类
*/
package seu.Client.view;import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Image;import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;//import sun.security.mscapi.KeyStore.ROOT;
public class CanteenAdminView extends JFrame { /**
*
*/
private static final long serialVersionUID = 1L;
DefaultMutableTreeNode[] dmtn = //创建节点数组
{new DefaultMutableTreeNode(new NodeValue("管理员操作选择") ),
new DefaultMutableTreeNode(new NodeValue("菜品管理") ),
new DefaultMutableTreeNode(new NodeValue("外卖管理") ),
new DefaultMutableTreeNode(new NodeValue("意见查看") ),
new DefaultMutableTreeNode(new NodeValue("退出") )
};
DefaultTreeModel dtm = new DefaultTreeModel(dmtn[0]);//指定根节点为SEU餐厅管理系统
JTree jt = new JTree(dtm);
JScrollPane jsp = new JScrollPane(jt); //为JTree创建活动窗口
private JSplitPane jsplr = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true);//创建左右分割窗体对象
private JPanel jp = new JPanel();
Image image = new ImageIcon(this.getClass().getResource("/image/images.jpg")).getImage();
ImageIcon ii = new ImageIcon(image);
private JLabel jlRoot = new JLabel(ii);
//private Manager mg;
String mgNO; //管理员ID
CardLayout cl = new CardLayout(); //创建卡片布局对象
public CanteenAdminView(String mgNO){ //构造器
this.mgNO = mgNO;
//this.setResizable(false);设置界面不可调
this.initJp();
this.addTreelistener();
for (int i =1;i<5;i++){
dtm.insertNodeInto(dmtn[i], dmtn[0], i-1);
}
jt.setEditable(false); //设置树中节点可编辑
this.getContentPane().add(jsplr); //添加滚动窗口
jsplr.setLeftComponent(jt);
jp.setBounds(200, 50, 600, 500);
jsplr.setRightComponent(jp);
jsplr.setDividerLocation(200);
jsplr.setDividerSize(4);
jlRoot.setFont(new Font("Courier",Font.PLAIN,30));
jlRoot.setHorizontalAlignment(JLabel.CENTER);
jlRoot.setVerticalAlignment(JLabel.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Image image = new ImageIcon(this.getClass().getResource("/image/canteenIcon.png")).getImage();//logo初始化
this.setIconImage(image);
this.setTitle("餐厅管理系统 --管理员");
java.awt.Toolkit tk = this.getToolkit();
Dimension screenSize = tk.getScreenSize(); //获得屏幕尺寸
int centerX = screenSize.width/2;
int centerY = screenSize.height/2;
int w = 1250;
int h = 600;
this.setBounds(centerX-w/2,centerY-h/2-100,w,h);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
this.setVisible(true);
jt.setShowsRootHandles(true);
}
/**
* @param args
*/
//public static void main(String[] args) {
// new CanteenAdminView("zyl"); //}
private void addTreelistener() { //为树添加选择模型的监听器
jt.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode cdmtn = (DefaultMutableTreeNode)e.getPath().getLastPathComponent();
NodeValue cnv = (NodeValue)cdmtn.getUserObject();//得到自定义节点对象
if(cnv.value.equals("管理员操作选择")){
cl.show(jp, "root");
}
if(cnv.value.equals("菜品管理")){
cl.show(jp, "ds");
}
else if(cnv.value.equals("外卖管理")){
cl.show(jp, "cata");
}
else if(cnv.value.equals("意见查看")){
cl.show(jp, "av");
}
else if(cnv.value.equals("退出")){
//System.out.println("退出");
System.exit(0);
}
}
});
} private void initJp() {
jp.setLayout(cl); //设置为卡片布局
jp.add(jlRoot,"Root");
jp.add(new CaDishSearch(),"ds");//相应对象待添加
jp.add(new CaTakeAway(),"cata");
jp.add(new CaAdviceView(),"av");
}
class NodeValue{//自定义节点对象字符属性
String value;
public NodeValue(String value){
this.value = value;
}
public String getValue(){
return this.value;
}
public String toString(){ //重写toString方法
return value;
}
}}