用Java实现文本编辑器

JMenuBar是用于制作菜单栏时用到的一个组件。将 JMenu 对象添加到菜单栏以构造菜单。当用户选择 JMenu 对象时,就会显示其关联的 JPopupMenu,允许用户选择其上的某一个 JMenuItem。

    菜单是非常重要的GUI组件,其界面提供的信息简明清晰,在用户界面中经常使用。Java的菜单组件是由多个类组成的,主要有:JMenuBar(菜单栏)、JMenu(菜单)、JMenuItem(菜单项)和JPopupMenu(弹出菜单)。


    每个菜单组件都包含一个菜单栏,每个菜单栏又包含若干个菜单,每个菜单包含若干个
菜单项。菜单项的作用与按钮类似,当用户单击时产生一个命令动作。
Java 中的菜单分为两类:一类是下拉式菜单,通常所说的菜单就是这一类;另一类就是
弹出式菜单。

1.创建下拉式菜单
(1)创建菜单栏JMenuBar
菜单栏组件是一个水平菜单。它只能加入到一个框架中,并成为所有菜单树的根。在一
个时刻,一个框架可以显示一个菜单栏。然而,也可以根据程序的状态修改菜单栏,这样,
在不同的时刻就可以显示不同的菜单。例如:
JFrame f = new JFrame("菜单实例"); //创建框架
JMenuBar JMB = new JMenuBar(); //创建菜单栏JMB
f.setJMenuBar(JMB); //设置JMB 为框架f的菜单栏
菜单栏不支持监听者。作为普通菜单行为的一部分,在菜单栏的区域中发生的事件和普
通组件一样会被自动处理

(2)创建菜单,添加到菜单栏中
菜单提供了一个基本的下拉式菜单。
(接上例):
JMenu m1 = new JMenu("File");//创建File菜单m1
JMenu m2 = new JMenu("Edit");
JMenu m3 = new JMenu("Tool");
JMenu m4 = new JMenu("Help");
JMB.add(m1);//将添加m1到JMB菜单栏上
JMB.add(m2);
JMB.add(m3);
JMB.add(m4);

(3)创建菜单项,加入到菜单中

菜单项时菜单树的”叶“节点。他们通常被加入到菜单中,以构成一个完整的菜单,例如(接上):

//  
Java中 Swing 包中的 setActionCommand(String ActionCommand) 
就是给一个JButton设置一个属性的字符串值,然后通过在actionPerformed(ActionEvent e)方法里通过if(e.getActioncommand.equals("改变"))判断哪个按钮发生了事件   
  当然也可以直接e.getActioncommand.equals("改变图形")来进行判断   
  但是当你有两个按钮或者多个按钮的属性名称相同时,就需要给每个按钮另外设置一个属性的字符串的值来进行判断你究竟选择的是哪个按钮。就要用到setActioncommand(); 
例如 
设置此组件激发的操作事件的命令名称。 
如: 
JButton btnShow = new JButton(); 
btnShow.setActionCommand("show"); 
当这个按钮被点击的时候,你就可以用 
ActionEvent 的 getActionCommand().equals("show") 
去比较触发事件的是不是这个按钮
//
mi1.setActionCommard("New");//设置菜单项mi1的命令字符串为new
JMenultem mi2 = new JMenultem("Load");
JMenultem mi3 = new JMenultem("Save");
JMenultem mi3 = new JMenultem("Quit");
m1.add(mi1);//把菜单项mi1加入到菜单m1中
m1.add(mi2);
m1.add(mi3);
m1.add(mi4);
(4)将建成的菜单栏添加到框架等容器中
例如,前面的例子中的f.setJMenuBar(JMB);,即设置JFrame 对象f的菜单栏为JMB。

(5)将菜单项注册给动作事件的监听者ActionListener

MenuListener myListener=new MenuListener( ); //创建监听对象
mi1.addActionListener(myListener); //为菜单项添加监听对象
其中MenuListener 为实现ActionListener 
接口的类,在该类中重载actionPerformed 方法
例如:
class MenuListener implements ActionListener{
	public void actionPerformed(ActionEvent e){
		if (e.getActionCommand().equals("Quit"))
		System.exit(0); //如果选择了Quit 菜单项,退出程序
	}
}

(6)使用分隔线
如果希望在菜单项之间添加一条横向分隔线,以便将菜单项分成几组,则需要调用菜单
的方法addSeparator( )。例如:m1.addSeparator();


(7)为菜单项定义访问键
除了可以单击鼠标选择菜单项外,还可以为每个菜单项定义一个键盘访问键,这样就可
以用键盘来选择菜单项了。访问键是一个字母,定义好了之后,按住Alt 键和该字母就可以
选择菜单中对应的菜单项。

例如,mi1.setMnemonic(’F’);给mi1 菜单项设置了访问键F,当菜
单项在界面上可见时,可以在键盘上按下Alt 键不放,同时按F键运行对应的命令。
如果希望菜单还有子菜单,只需先建立带菜单项的菜单,再把该菜单像菜单项一样加入到另一个菜单即可。

    在Java 菜单中定义了按钮确认框选项JcheckBoxMenuItem能够选中和不选中,圆形确认
框选项JradioButtonMenuItem能选中和不选中(一个选中,其他变为不选中,具有排他性),
它们的构造方法和JMenuItem类似,只是多了一个是否选中的参数。对应地,菜单项引发的
事件是ItemEvent,这样需要利用addItemListener方法把菜单项注册给ItemListener类的对象,
并实现ItemListener 的itemStateChanged(ItemEvent e)方法。我们可以通过ItemEvent 对象的
getStateChange( )方法获取菜单项的状态(2 表示从选中到未选中,1 表示从未选中到选中)

Java JScrollPane的应用_jscrollpane用法_康耶的博客-CSDN博客

【Java AWT 图形界面编程】FileDialog 对话框 ( 打开文件 | 保存文件 | 构造函数 | 获取文件路径 | 获取文件名称 | 代码示例 )_java文件对话框的构造方法_韩曙亮的博客-CSDN博客

Java IO之:BufferedReader(超详细解析,使用方法说明)_Hi丶ImViper的博客-CSDN博客

 JavaGUI 06 输入框监听_牟泉禹[Dark Cat]的博客-CSDN博客

subString的用法小结_substring(1)-CSDN博客

JAVA界面编程之弹窗、弹框JOptionPane的showMessageDialog方法详解_java showmessagedialog_Be You Want To Be的博客-CSDN博客

`Object source = e.getSource();` 是用于获取事件对象(`e`)的来源组件的代码。在 Java Swing 中,事件通常与用户与界面元素的交互有关,比如点击按钮或者输入文本。当事件发生时,Java Swing 会创建一个事件对象(通常是 `ActionEvent`、`MouseEvent` 等),并将它传递给相应的事件处理程序。

`e.getSource()` 是事件对象提供的方法,它返回触发事件的组件(通常是 Swing 组件,比如按钮)。这对于确定是哪个组件触发了事件非常有用,因为你可以根据事件的来源来执行相应的操作。

例如,假设你有多个按钮,每个按钮执行不同的操作。你可以使用 `e.getSource()` 来确定哪个按钮被点击了,然后根据按钮的来源执行相应的操作,如下所示:


public void actionPerformed(ActionEvent e) {
    Object source = e.getSource();
    
    if (source == button1) {
        // 执行按钮1的操作
    } else if (source == button2) {
        // 执行按钮2的操作
    } else if (source == button3) {
        // 执行按钮3的操作
    }
}

在这个示例中,`button1`、`button2` 和 `button3` 是不同的按钮,根据事件的来源来执行不同的操作。

这种方法允许你根据事件源的不同来编写灵活的事件处理程序,以便在用户与不同的界面组件进行交互时执行不同的操作。

`JLabel` 是 Java Swing 中的一个组件,用于显示文本或图像。它通常用于在用户界面中添加标签或说明信息。

以下是关于 `JLabel` 的一些基本信息:

1. **文本显示:** 最常见的用途是显示文本,可以用来提供关于其他组件或应用程序功能的说明。

2. **图像显示:** 除了文本,`JLabel` 也可以用来显示图像。可以将图像加载到 `JLabel` 中,使其在界面上显示。

3. **样式和字体:** 可以设置 `JLabel` 的字体、颜色、对齐方式等样式属性,以满足设计要求。

4. **图标和标签:** `JLabel` 可以同时显示文本和图像,这使得它非常灵活。

5. **事件处理:** 尽管 `JLabel` 本身不会触发事件,但它可以作为其他组件的标签,用来提供额外的信息。

以下是一个简单的示例,演示了如何创建一个带有文本的 `JLabel`:


import javax.swing.*;

import javax.swing.*;

public class LabelExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("JLabel 示例");
        
        JLabel label = new JLabel("这是一个标签");
        label.setHorizontalAlignment(JLabel.CENTER); // 设置文本居中对齐
        
        frame.getContentPane().add(label);
        frame.setSize(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

在这个示例中,创建了一个 `JFrame` 窗口,并向其中添加了一个居中对齐的 `JLabel`。

如果你想要在 `JLabel` 中显示图像,你可以使用 `setIcon()` 方法来设置一个图标。例如:


ImageIcon icon = new ImageIcon("path/to/your/image.png");
JLabel imageLabel = new JLabel(icon);
 

这将在 `JLabel` 中显示指定路径的图像。

`JPanel` 是 Java Swing 中的一个容器组件,用于组织和管理其他组件。它可以包含按钮、文本框、标签等等,同时也可以包含其他的面板,从而形成一个层次化的用户界面。

以下是关于 `JPanel` 的一些基本信息:

1. **容器组件:** `JPanel` 是一个容器组件,可以用来存放其他的 Swing 组件,比如按钮、文本框、标签等。

2. **布局管理器:** 可以向 `JPanel` 中添加布局管理器,以控制其内部组件的排列方式。常用的布局管理器有 `FlowLayout`、`BorderLayout`、`GridLayout` 等。

3. **绘制和自定义:** 你可以通过继承 `JPanel` 并重写 `paintComponent` 方法来实现自定义绘制。这对于创建自定义的绘图或动画非常有用。

4. **事件处理:** `JPanel` 本身可以作为事件的接收者,可以在上面添加事件监听器,响应用户的交互操作。

5. **嵌套使用:** `JPanel` 可以被嵌套在其他 `JPanel` 中,从而实现复杂的界面布局。

以下是一个简单的示例,演示了如何创建一个包含两个按钮的 `JPanel`:
 

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class PanelExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("JPanel 示例");

        JPanel panel = new JPanel();
        JButton button1 = new JButton("按钮1");
        JButton button2 = new JButton("按钮2");

        panel.add(button1);
        panel.add(button2);

        button1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(frame, "你点击了按钮1!");
            }
        });

        button2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(frame, "你点击了按钮2!");
            }
        });

        frame.getContentPane().add(panel);
        frame.setSize(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

在这个示例中,创建了一个 `JFrame` 窗口,并向其中添加了一个包含两个按钮的 `JPanel`。

用Java实现文本编辑器:创建、浏览、编辑文件;剪贴、复制、粘贴;保存、另存为;字符统计;自动换行_java文本编辑器_马克7758的博客-CSDN博客

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值