Java中ItemListener的问题
我正在创建一个简单的粗体和斜体复选框,它将更改文本字段t1中写入的字体样式。我这样做了,但没用Java中ItemListener的问题,java,swing,jcheckbox,itemlistener,Java,Swing,Jcheckbox,Itemlistener,我正在创建一个简单的粗体和斜体复选框,它将更改文本字段t1中写入的字体样式。我这样做了,但没用 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class S4 extends JFrame implements ItemListener{ public S4(){ setSize(300,150); setVisible(true); s
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class S4 extends JFrame implements ItemListener{
public S4(){
setSize(300,150);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JCheckBox c1,c2;
JTextField t1;
Panel p1 = new Panel();
c1 = new JCheckBox("Bold",false);
c2 = new JCheckBox("Italic",false);
t1 = new JTextField(40);
p1.add(t1);
p1.add(c1);
p1.add(c2);
c1.addItemListener(this);
c1.addItemListener(this);
getContentPane().add(p1);
}
public void itemStateChanged(ItemEvent e){
Font f;
if(c1.isSelected() && c2.isSelected()){
f = new Font("Aerial",Font.BOLD+Font.ITALIC,13);
}
else if (c1.isSelected()){
f = new Font("Aerial",Font.BOLD,13);
}
else if (c2.isSelected()){
f = new Font("Aerial",Font.ITALIC,13);
}
else {
f = new Font("Aerial",Font.PLAIN,13);
}
t1.setFont(f);
}
public static void main(String [] args){
new S4();
}
}
首先,不能在一个方法中声明变量,然后在另一个方法中使用它们。您需要声明您的
JCheckBox c1、c2
和您的jtextfieldt1类本身中的代码>
再看一下添加侦听器的位置,将侦听器添加两次到c1
。您要将其添加到c1
和c2
的位置
这是您的源代码,但有一些小改动,所以它可以工作
import java.awt.Font;
import java.awt.Panel;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class S4 extends JFrame implements ItemListener {
JCheckBox c1, c2;
JTextField t1;
public S4() {
setSize(300,150);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Panel p1 = new Panel();
c1 = new JCheckBox("Bold",false);
c2 = new JCheckBox("Italic",false);
t1 = new JTextField(40);
p1.add(t1);
p1.add(c1);
p1.add(c2);
c1.addItemListener(this);
c1.addItemListener(this);
getContentPane().add(p1);
}
public void itemStateChanged(ItemEvent e){
Font f;
if(c1.isSelected() && c2.isSelected()){
f = new Font("Arial",Font.BOLD+Font.ITALIC,13);
}
else if (c1.isSelected()){
f = new Font("Arial",Font.BOLD,13);
}
else if (c2.isSelected()){
f = new Font("Arial",Font.ITALIC,13);
}
else {
f = new Font("Arial",Font.PLAIN,13);
}
t1.setFont(f);
}
public static void main(String [] args){
new S4();
}
}
此外,您使用的字体拼写为工作字体,字体拼写为“Arial”,除非您使用的是自定义安装的字体。像这样一次 您所使用的字体称为“Arial”您没有发布问题。你想做什么?什么不起作用?为什么要将itemlistener添加到c1两次?我想你指的是c1。addItemListener(这个);c2.附加侦听器(本);谢谢你的帮助。。。我想我明白了:)