【问题标题】:Problems with ItemListener in Java [closed]Java中ItemListener的问题[关闭]
【发布时间】:2013-08-03 18:55:05
【问题描述】:

我正在创建一个简单的粗体和斜体复选框,它将更改文本字段 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);
        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();
    }
}

【问题讨论】:

  • 您没有发布问题。你想做什么?什么不工作?
  • 为什么两次将itemlistener添加到c1?我认为您的意思是 c1.addItemListener(this); c2.addItemListener(this);

标签: java swing jcheckbox itemlistener


【解决方案1】:

嗯,首先你不能在一个方法中声明变量,然后在另一个方法中使用它们。您需要在类本身中声明您的JCheckBox c1, c2;JTextField t1;

还要看看你添加监听器的位置,你添加了两次监听器到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”,除非您使用的是自定义安装字体。像这样一次。 http://www.dafont.com/aerial.font

【讨论】:

  • 感谢您的帮助...我想我明白了 :)
【解决方案2】:

你要的字体叫“Arial”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    相关资源
    最近更新 更多