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

首先,必须有一个GUI的类,让它继承JPanel类(javax.swing.JPanel);让这个类实现MouseListener接口(java.awt.event.MouseListener),并实现此接口的所有方法;其中有一个mouseClicked(MouseEvent e)方法,就是当该JPanel被鼠标点击时所调用的方法;在此方法中写上修改画笔颜色、字体的代码;最后,由于...
java图形界面 运行时如何在点击鼠标时 改变字体颜色或者大小
一段段发果断看不懂,于是把我终于裹出来的程序直接给你好了=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);
}
};2011-12-22
首先,必须有一个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://状态0color=Color.black;font=new Font("Arial",Font.PLAIN,12);break;case 1://状态1color=Color.blue;font=new Font("Century Gothic",Font.BOLD,12);break;default://此为无效状态}}public void mouseClicked(MouseEvent e) {//此方法在鼠标点击JPanel时自动调用//此句规定了成员变量state的2种状态,即0,1state=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的对象,仿照上述代码调用。
2015-09-05
你好。
在ItemEvent的方法里有判断选项是否改变的字段,如果改变了,就会触发响应的操作。2011-12-21
用一个onclick鼠标点击事件
用选择器选择你要修改的模块,创建一个脚本函数通过onclick事件来修改字体颜色和大小
function change() {
$("选择器").attr("style","color:red");
$("选择器").attr("style","font-size:12px");

},2015-08-20
在事件里面加入对应的代码不就行了吗?.setFont()方法2011-12-21
我也想问……2011-12-27
mengvlog 阅读 7 次 更新于 2025-07-20 09:09:44 我来答关注问题0
檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部