GUI-01

 

 


创建图像化界面
1,创建frame窗体
2,对窗体进行基本设置
  比如大小,位置,布局
3,定义组件
4,将组件通过窗体的add方法添加到窗体中
5,让窗体显示,通过setVisible(true);


事件监听机制的特点:
1,事件源
2,事件
3,监听器
4,事件处理

事件源:就是awt包或者swing包中的那些图形界面组件

事件:每一个事件源都有自己特有的对应事件和共性事件

监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中

以上三者,在java中都已经定义好了,
直接获取其对象来用就可以了。

我们要做的事情,就是对产生的动作进行处理。

 

import java.awt.*;
import java.awt.event.*;
class AwtDemo
{
 public static void main(String[] args)
 {
  Frame f = new Frame("my awt");//默认窗体不可见,默认边界布局
  f.setSize(500,400);//设置长和宽,即横坐标和纵坐标
  f.setLocation(300,200);//设置窗体出现在屏幕位置,即距离左边和上面距离
  f.setLayout(new FlowLayout());//设置窗体布局,设置为流式布局
  
  Button b = new Button("我是一个按钮");
  f.add(b);//添加按钮
  
  f.addWindowListener(new WindowAdapter()//匿名内部类
  {
   public void windowClosing(WindowEvent e)
   {
    System.out.println("我关"); 
    System.exit(0);
   }
   public void windowActivated(WindowEvent e)//窗口前置
   {
     System.out.println("我活了");
   }
   public void windowOpened(WindowEvent e)//打开窗口
   {
    System.out.println("我被打开了"); 
   }
    
  });// 添加指定窗口监听器
  
  f.setVisible(true);//设置显示窗体
  
  //System.out.println("hew");
 }
}
/*
class MyWin implements WindowListener
{
  //要覆盖7个方法,可是我只用到了关闭的动作。
  //其他动作都没有用到,可是却必须要复写。
}
*/
//因为WindowListener的子类WindowAdapter已经实现了
//WindListener接口。并覆盖了其中的所有方法。那么我
//只要继承自Windowadapter覆盖我需要的方法即可
class MyWin extends WindowAdapter
{
 public void windowClosing(WindowEvent e)
 {
  //System.out.println("window closing----"+e.toString()); 
  System.exit(0);//关闭窗口
 } 
}

-----------------------------------------------------------------------------

事件和图形化组件分离开

例:

import java.awt.*;
import java.awt.event.*;
class FrameDemo
{
 //定义该图形中所需的组件的引用
 private Frame f;
 private Button but;
 
 FrameDemo()//构造函数
 {
  init();
 }
 public void init() //此处定义图形界面
 {
  f = new Frame("my frame");
  
  //对frame进行基本设置
  f.setBounds(300, 100, 600, 500);//移动组件并调整大小 
  f.setLayout(new FlowLayout());
  
  but = new Button("my button");
  
  //将组件添加到frame中
  f.add(but);
  
  //加载窗体上事件
  myEvent(); //此处添加了关闭窗口的事件,
  
  //显示窗体
  f.setVisible(true);
 }
 
 private void myEvent() //此处定义事件 
 {
  f.addWindowListener(new WindowAdapter() //监听器,匿名内部类
  {
   public void windowClosing(WindowEvent e)
   {
    System.exit(0);
   }
  }); 
  
  //让按钮具备退出程序的功能
  /*
  按钮就是事件源。
  那么选择哪个监听器呢?
  通过关闭窗体示例了解到,想要知道哪个组件具备什么
  样的特有监听器,需要查看该组件对象的功能。
  通过查阅button的描述,发现按钮支持一个特有监听
  addActionListener.
  */
  but.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    System.out.println("退出,按钮干的");
    System.exit(0); 
   } 
  });
 }
 
 public static void main(String[] args)//主函数
 {
  new FrameDemo(); //创建对象,产生窗体
 }
}

 --------------------------------------------------------------------------------

个人总结:记住窗口,按钮,文本框等一些相关命令,图形设计和事件分离,

要确定事件源,事件要写匿名内部类

<think>我们正在讨论mhvtl-gui-master的安装步骤。根据之前的对话,用户尝试编译安装mhvtl时遇到了报错,但当前的问题是关于mhvtl-gui-master的安装。由于用户提供的引用[1]是关于mhvtl的安装步骤,而我们现在需要的是mhvtl-gui(即管理界面)的安装,因此我们需要转向寻找mhvtl-gui的安装方法。 注意:mhvtl-gui是一个用于管理mhvtl(虚拟磁带库)的Web界面。通常,它可能需要一些依赖和环境。 由于用户没有提供具体的错误信息,我们将提供通用的安装步骤。同时,由于mhvtl-gui通常是基于Python的Web应用,所以需要Python环境以及相关依赖。 安装步骤可能包括: 1. 确保已安装mhvtl(因为mhvtl-gui是用来管理mhvtl的) 2. 获取mhvtl-gui-master的源代码(通常从GitHub克隆) 3. 安装所需的Python依赖包(如requirements.txt中列出的) 4. 配置mhvtl-gui(可能需要修改配置文件以指向mhvtl的数据库等) 5. 运行mhvtl-gui 由于用户之前尝试安装mhvtl,我们假设mhvtl已经安装成功(如果没有,则需要先安装mhvtl)。 下面我将详细描述步骤: ### 步骤1: 安装mhvtl 如果mhvtl尚未安装,请参考之前的步骤或官方文档进行安装。这里简要列出步骤(但用户之前有报错,如果报错未解决,需要先解决mhvtl的安装问题): ```bash # 创建用户和目录 sudo useradd vtl sudo mkdir /opt/mhvtl sudo mkdir /etc/mhvtl sudo chown -R vtl:vtl /opt/mhvtl sudo chown -R vtl:vtl /etc/mhvtl # 进入mhvtl源码目录,编译安装(假设源码在/u01/app/mhvtl/mhvtl1.6/kernel) cd /u01/app/mhvtl/mhvtl1.6/kernel make && sudo make install ``` ### 步骤2: 获取mhvtl-gui-master源码 通常,mhvtl-gui项目托管在GitHub上。我们可以使用git克隆: ```bash cd ~ git clone https://github.com/markh794/mhvtl-gui.git cd mhvtl-gui ``` ### 步骤3: 安装Python依赖 mhvtl-gui通常需要Python3和pip。确保已安装Python3和pip,然后安装依赖: ```bash sudo apt install python3-pip # 如果未安装pip pip3 install -r requirements.txt ``` ### 步骤4: 配置mhvtl-gui mhvtl-gui可能需要配置数据库连接。默认情况下,它可能使用SQLite数据库,但需要确保数据库路径正确。配置文件可能在`mhvtl-gui/settings.py`或类似位置。 检查设置文件,特别是数据库路径和mhvtl相关的路径。 ### 步骤5: 运行mhvtl-gui 通常,使用以下命令运行: ```bash python3 manage.py runserver 0.0.0.0:8000 ``` 然后可以通过浏览器访问http://<服务器IP>:8000 来使用界面。 注意:在生产环境中,可能需要配置Web服务器(如Apache或Nginx)和WSGI服务器(如Gunicorn)来部署。 ### 注意事项 - 用户之前编译mhvtl报错,如果mhvtl没有正确安装,那么mhvtl-gui可能无法正常工作,因为它依赖于mhvtl。 - 安装过程中可能会遇到Python包依赖问题,需要根据错误信息解决。 由于用户之前的问题中编译mhvtl报错,我们可能需要先解决那个问题。但当前问题只问及mhvtl-gui的安装步骤,因此我们假设mhvtl已经安装成功。 如果用户在执行上述步骤中遇到问题,需要提供具体的错误信息。 §§相关问题§§ 1. mhvtl-gui安装过程中遇到依赖错误如何解决? 2. 如何配置mhvtl-gui连接mhvtl的数据库? 3. 如何将mhvtl-gui部署为系统服务? </think>### mhvtl-gui-master安装步骤 mhvtl-gui是基于Python的Web管理界面,用于监控和管理mhvtl虚拟磁带库。以下是详细安装流程: #### 1. **安装依赖项** ```bash # Python3及pip sudo apt install python3 python3-pip # 前端依赖 sudo apt install nodejs npm # 数据库支持(默认SQLite) sudo apt install sqlite3 # mhvtl核心组件(需先安装) sudo apt install mhvtl # 或从源码编译安装[^1] ``` #### 2. **获取源码** ```bash git clone https://github.com/markh794/mhvtl-gui.git cd mhvtl-gui ``` #### 3. **Python环境配置** ```bash # 安装虚拟环境 python3 -m venv venv source venv/bin/activate # 安装Python依赖 pip install -r requirements.txt ``` #### 4. **前端编译** ```bash cd frontend npm install npm run build cd .. ``` #### 5. **数据库初始化** ```bash python manage.py makemigrations python manage.py migrate ``` #### 6. **配置文件修改** 编辑`mhvtl_gui/settings.py`: ```python # 允许外部访问 ALLOWED_HOSTS = ['*'] # 数据库配置(默认SQLite) DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } ``` #### 7. **启动服务** ```bash # 开发模式 python manage.py runserver 0.0.0.0:8000 # 生产部署建议使用 nohup python manage.py runserver 0.0.0.0:8000 & ``` #### 8. **访问界面** 浏览器访问:`http://服务器IP:8000` 初始账户:admin/admin(首次登录后立即修改) #### 常见问题解决 - **端口冲突**:修改`settings.py`中的`PORT = 8000` - **数据库连接失败**:检查`/etc/mhvtl/mhvtl.conf`配置 - **权限问题**:确保vtl用户对`/opt/mhvtl`有读写权限[^1]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值