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

如何对JCombox的项选择事件ActionEvent进行处理,实现字体颜色和大小的设置。对JCheckbox的项选择事件ItemEvent进行处理,实现字体粗体、斜体的... 如何对JCombox的项选择事件ActionEvent进行处理,实现字体颜色和大小的设置。
对JCheckbox的项选择事件ItemEvent进行处理,实现字体粗体、斜体的设置。
展开
 我来答
84461810
推荐于2016-09-22 · TA获得超过231个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:55.4万
展开全部

首先,必须有一个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的对象,仿照上述代码调用。

xidianheyanjun
2011-12-21 · TA获得超过296个赞
知道小有建树答主
回答量:598
采纳率:0%
帮助的人:397万
展开全部
你好。
在ItemEvent的方法里有判断选项是否改变的字段,如果改变了,就会触发响应的操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友be72e7ff8
2015-08-20 · TA获得超过126个赞
知道小有建树答主
回答量:155
采纳率:100%
帮助的人:51.7万
展开全部
用一个onclick鼠标点击事件
用选择器选择你要修改的模块,创建一个脚本函数通过onclick事件来修改字体颜色和大小
function change() {
$("选择器").attr("style","color:red");
$("选择器").attr("style","font-size:12px");

},
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大平彭0E
2011-12-27
知道答主
回答量:9
采纳率:0%
帮助的人:2.9万
展开全部
我也想问……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在美食街写诗的比目鱼
2011-12-22
知道答主
回答量:6
采纳率:0%
帮助的人:3.9万
展开全部
一段段发果断看不懂,于是把我终于裹出来的程序直接给你好了=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);
}
};
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式