java图形界面 运行时如何在点击鼠标时 改变字体颜色或者大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java图形界面 运行时如何在点击鼠标时 改变字体颜色或者大小相关的知识,希望对你有一定的参考价值。

如何对JCombox的项选择事件ActionEvent进行处理,实现字体颜色和大小的设置。
对JCheckbox的项选择事件ItemEvent进行处理,实现字体粗体、斜体的设置。

首先,必须有一个GUI的类,让它继承JPanel类(javax.swing.JPanel);

让这个类实现MouseListener接口(java.awt.event.MouseListener),并实现此接口的所有方法;

其中有一个mouseClicked(MouseEvent e)方法,就是当该JPanel被鼠标点击时所调用的方法;在此方法中写上修改画笔颜色、字体的代码;

最后,由于继承了JPanel类,故可以重写paint(Graphics g)方法,在此方法中加入一些绘制方法。

示例代码如下:

package com;

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

public class Client extends JPanel implements MouseListener 
private JFrame f;
private Color color;
private Font font;
//为了方便,可以增加一个状态变量
private int state=0;
public Client()
f=new JFrame("Test");
//此句修改JPanel大小
setPreferredSize(new Dimension(400,300));
setBackground(Color.white);
f.add(this);
//此句让JFrame适应JPanel大小
f.pack();
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//此句为JPanel对象设置了鼠标事件监听器(MouseListener)
addMouseListener(this);
color=Color.black;
font=new Font("Arial",Font.PLAIN,12);
f.setVisible(true);

public void paint(Graphics g)
super.paint(g);
//这2行代码根据成员变量color与font设置了画笔的颜色与字体,可由外部方法更改
g.setColor(color);
g.setFont(font);
//以下为自定义的绘制操作
g.fillRect(50,50,60,45);
g.drawString("Hello this is the test text",50,120);

public static void main(String[] args)
Client c=new Client();
//此为循环重绘的代码
while(true)
try
//每40毫秒(25分之1秒)重绘一次
Thread.sleep(40);
catch(Exception e)
e.printStackTrace();

//调用重绘方法
c.repaint();


public void stateChanged()
switch(state)
case 0://状态0
color=Color.black;
font=new Font("Arial",Font.PLAIN,12);
break;
case 1://状态1
color=Color.blue;
font=new Font("Century Gothic",Font.BOLD,12);
break;
default://此为无效状态


public void mouseClicked(MouseEvent e) 
//此方法在鼠标点击JPanel时自动调用
//此句规定了成员变量state的2种状态,即0,1
state=state>=1?0:state+1;
//下面的方法修改了成员变量color和font,从而实现画笔颜色与字体的变更
stateChanged();

public void mouseEntered(MouseEvent e) 
public void mouseExited(MouseEvent e) 
public void mousePressed(MouseEvent e) 
public void mouseReleased(MouseEvent e) 


效果:

如果想要让不同的部分绘制成不同的颜色或字体,可在成员变量中增加更多的类似于color与font的对象,仿照上述代码调用。

参考技术A 你好。
在ItemEvent的方法里有判断选项是否改变的字段,如果改变了,就会触发响应的操作。
参考技术B 用一个onclick鼠标点击事件
用选择器选择你要修改的模块,创建一个脚本函数通过onclick事件来修改字体颜色和大小
function change()
$("选择器").attr("style","color:red");
$("选择器").attr("style","font-size:12px");

,
参考技术C 我也想问…… 参考技术D 一段段发果断看不懂,于是把我终于裹出来的程序直接给你好了=w=+
不怎么习惯打注释,于是凑活着看?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class ArtFont extends JFrame implements ActionListener

JComboBox fontType,fontSize;
JCheckBox boldBx;
JCheckBox italicBx;
JButton colorBtn;
String[] fontNames;
String[] fontSizes;
JLabel label;
JTextField inputText;
JTextArea txtArea;
JPanel fontPanel;
JPanel showPanel;
Font font;
int boldStyle,italicStyle,underlineSytle;
int fontSizeStyle;
String fontNameStyle;
Color colorStyle=Color.black;
public ArtFont()

super("字体设置");
boldStyle=0;
italicStyle=0;
underlineSytle=0;
fontSizeStyle=10;
fontNameStyle="宋体";
font=new Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);
fontPanel=new JPanel();
fontPanel.setLayout(new FlowLayout());
GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
fontNames=ge.getAvailableFontFamilyNames();
fontType=new JComboBox(fontNames);
fontType.setEditable(false);
fontType.setMaximumRowCount(10);
fontType.addItemListener(new ItemListener()

public void itemStateChanged(ItemEvent e)

if(e.getStateChange()==e.SELECTED)

fontNameStyle=fontNames[fontType.getSelectedIndex()];
txtArea.setFont(new Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle));


);

fontSizes=new String[63];
for(int i=0;i<63;i++)

fontSizes[i]=Integer.toString((i+10));

fontSize=new JComboBox(fontSizes);
fontSize.setEditable(false);
fontSize.addItemListener(new ItemListener()

public void itemStateChanged(ItemEvent e)

if(e.getStateChange()==e.SELECTED)

fontSizeStyle=fontSize.getSelectedIndex();
txtArea.setFont(new Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle));


);

boldBx=new JCheckBox("粗体");
boldBx.addItemListener(new ItemListener()

public void itemStateChanged(ItemEvent e)

if(e.getStateChange()==e.SELECTED)

boldStyle=getFont().BOLD;
txtArea.setFont(new Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle));

else

boldStyle=getFont().PLAIN;
txtArea.setFont(new Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle));


);

italicBx=new JCheckBox("斜体");
italicBx.addItemListener(new ItemListener()

public void itemStateChanged(ItemEvent e)

if(e.getStateChange()==e.SELECTED)

italicStyle=getFont().ITALIC;
txtArea.setFont(new Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle));

else

italicStyle=getFont().PLAIN;
txtArea.setFont(new Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle));


);

colorBtn=new JButton("颜色");
colorBtn.addActionListener(this);

fontPanel.add(fontType);
fontPanel.add(fontSize);
fontPanel.add(boldBx);
fontPanel.add(italicBx);
fontPanel.add(colorBtn);

label=new JLabel("输入");
inputText=new JTextField(30);
inputText.addActionListener(this);
txtArea=new JTextArea(10,80);
txtArea.setFont(font);

showPanel=new JPanel();
showPanel.add(label);
showPanel.add(inputText);
showPanel.setLayout(new FlowLayout());
showPanel.add(new JScrollPane(txtArea));

Container container=getContentPane();
container.setLayout(new BorderLayout());
container.add(fontPanel,BorderLayout.NORTH);
container.add(showPanel,BorderLayout.CENTER);
setSize(500,300);
setVisible(true);

//颜色监听器
public void actionPerformed(ActionEvent e)

if(e.getSource()==colorBtn)

colorStyle=JColorChooser.showDialog(this,"选择字体颜色",colorStyle);
colorBtn.setForeground(colorStyle);
txtArea.setForeground(colorStyle);

else if(e.getSource()==inputText)

txtArea.setText(inputText.getText());



public static void main(String args[])

ArtFont artFont=new ArtFont();
artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

;

以上是关于java图形界面 运行时如何在点击鼠标时 改变字体颜色或者大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中使鼠标点击时颜色改变?

cdr里面怎么改变图片里面字体颜色

十. 图形界面(GUI)设计13.鼠标事件

在 Java 中每次单击鼠标都会更改字符串的字体

html中如何让超级连接的颜色改变

matlab Y坐标轴的字体如何调大