package AWT;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ComboBoxTest
{
public static void main(String[] args)
{
ComboBoxFrame frame = new ComboBoxFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class ComboBoxFrame extends JFrame
{
private JComboBox faceCombo;
private JLabel label;
private static final int DEFAULT_SIZE = 12;
public ComboBoxFrame()
{
setTitle("ComboBoxTest");
setSize(300,300);
Container contentPane = getContentPane();
label =new JLabel("The quick brown fox jumps over the lazy dogs");
label.setFont(new Font("serif",Font.PLAIN,DEFAULT_SIZE));
contentPane.add(label,BorderLayout.CENTER);
faceCombo = new JComboBox();
faceCombo.setEditable(true);
faceCombo.addItem("Serif");
faceCombo.addItem("SansSerif");
faceCombo.addItem("Monospaced");
faceCombo.addItem("Dialog");
faceCombo.addItem("DialogInput");
String s=(String)faceCombo.getSelectedItem();
//s.addDocumentListener(new Aa());
JPanel comboPanel = new JPanel();
comboPanel.add(faceCombo);
contentPane.add(comboPanel, BorderLayout.SOUTH);
} private class Aa implements javax.swing.event.DocumentListener
{
public void removeUpdate(javax.swing.event.DocumentListener e)
{
label.setFont(new Font((String)faceCombo.getSelectedItem(),Font.PLAIN,DEFAULT_SIZE));
}
public void insertUpdate(javax.swing.event.DocumentListener e)
{
label.setFont(new Font((String)faceCombo.getSelectedItem(),Font.PLAIN,DEFAULT_SIZE));
}
public void changedUpdate(javax.swing.event.DocumentListener e)
{
label.setFont(new Font((String)faceCombo.getSelectedItem(),Font.PLAIN,DEFAULT_SIZE));
}
}
}大家看看这段代码哪错了,意思是那个ComboBox里的文本一改变就触发还有javax.swing.event.DocumentListener 为什么我光写DocumentListener就错了了,我已经import包了啊,晕了,高手指教啊,不胜感激
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ComboBoxTest
{
public static void main(String[] args)
{
ComboBoxFrame frame = new ComboBoxFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class ComboBoxFrame extends JFrame
{
private JComboBox faceCombo;
private JLabel label;
private static final int DEFAULT_SIZE = 12;
public ComboBoxFrame()
{
setTitle("ComboBoxTest");
setSize(300,300);
Container contentPane = getContentPane();
label =new JLabel("The quick brown fox jumps over the lazy dogs");
label.setFont(new Font("serif",Font.PLAIN,DEFAULT_SIZE));
contentPane.add(label,BorderLayout.CENTER);
faceCombo = new JComboBox();
faceCombo.setEditable(true);
faceCombo.addItem("Serif");
faceCombo.addItem("SansSerif");
faceCombo.addItem("Monospaced");
faceCombo.addItem("Dialog");
faceCombo.addItem("DialogInput");
String s=(String)faceCombo.getSelectedItem();
//s.addDocumentListener(new Aa());
JPanel comboPanel = new JPanel();
comboPanel.add(faceCombo);
contentPane.add(comboPanel, BorderLayout.SOUTH);
} private class Aa implements javax.swing.event.DocumentListener
{
public void removeUpdate(javax.swing.event.DocumentListener e)
{
label.setFont(new Font((String)faceCombo.getSelectedItem(),Font.PLAIN,DEFAULT_SIZE));
}
public void insertUpdate(javax.swing.event.DocumentListener e)
{
label.setFont(new Font((String)faceCombo.getSelectedItem(),Font.PLAIN,DEFAULT_SIZE));
}
public void changedUpdate(javax.swing.event.DocumentListener e)
{
label.setFont(new Font((String)faceCombo.getSelectedItem(),Font.PLAIN,DEFAULT_SIZE));
}
}
}大家看看这段代码哪错了,意思是那个ComboBox里的文本一改变就触发还有javax.swing.event.DocumentListener 为什么我光写DocumentListener就错了了,我已经import包了啊,晕了,高手指教啊,不胜感激
1 你的内部内 class Aa 都没有用
2 你的几个实现DocumentListener接口的几个方法都写错了,参数不对
3 你是要选择那个ComboBox来触发事件,因此要对faceCombo进行监听,即addActionListener
4 你说javax.swing.event.DocumentListener 光写DocumentListener就错了?根本就没有import这个包,至少你贴上来的代码没有javax.swing.event这个包,不是javax.swing这个哦。
5 frame.show()方法已经过时,请使用serVisible()方法。改正代码如下:
---------------------
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;public class ComboBoxTest {
public static void main(String[] args) {
ComboBoxFrame frame = new ComboBoxFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}class ComboBoxFrame extends JFrame implements ActionListener {
private JComboBox faceCombo; private JLabel label; private static final int DEFAULT_SIZE = 12; public ComboBoxFrame() {
setTitle("ComboBoxTest");
setSize(300, 300);
Container contentPane = getContentPane(); label = new JLabel("The quick brown fox jumps over the lazy dogs");
label.setFont(new Font("serif", Font.PLAIN, DEFAULT_SIZE));
contentPane.add(label, BorderLayout.CENTER); faceCombo = new JComboBox();
faceCombo.setEditable(true);
faceCombo.addItem("Serif");
faceCombo.addItem("SansSerif");
faceCombo.addItem("Monospaced");
faceCombo.addItem("Dialog");
faceCombo.addItem("DialogInput");
faceCombo.addActionListener(this);//注意这里
JPanel comboPanel = new JPanel();
comboPanel.add(faceCombo);
contentPane.add(comboPanel, BorderLayout.SOUTH);
} public void actionPerformed(ActionEvent e) {//这里才是事件的处理函数
label.setFont(new Font((String) faceCombo.getSelectedItem(),
Font.PLAIN, DEFAULT_SIZE));
}
}
现在我不想对faceCombo进行监听 因为我faceCombo.setEditable(true)后,我就可以在faceCombo的文本框里设置,可是我发现,我设置了后没效果,所以我现在想对faceCombo里的文本框的内容进行监听
package AWT;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class ComboBoxTest
{
public static void main(String[] args)
{
ComboBoxFrame frame = new ComboBoxFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class ComboBoxFrame extends JFrame
{
private JComboBox faceCombo;
private JLabel label;
private static final int DEFAULT_SIZE = 12;
public ComboBoxFrame()
{
setTitle("ComboBoxTest");
setSize(300,300);
Container contentPane = getContentPane();
label =new JLabel("The quick brown fox jumps over the lazy dogs");
label.setFont(new Font("serif",Font.PLAIN,DEFAULT_SIZE));
contentPane.add(label,BorderLayout.CENTER);
faceCombo = new JComboBox();
faceCombo.setEditable(true);
faceCombo.addItem("Serif");
faceCombo.addItem("SansSerif");
faceCombo.addItem("Monospaced");
faceCombo.addItem("Dialog");
faceCombo.addItem("DialogInput");
String s=(String)faceCombo.getSelectedItem();
s.addDocumentListener(new Aa());
JPanel comboPanel = new JPanel();
comboPanel.add(faceCombo);
contentPane.add(comboPanel, BorderLayout.SOUTH);
} private class Aa implements DocumentListener
{
public void removeUpdate(DocumentEvent e)
{
label.setFont(new Font((String)faceCombo.getSelectedItem(),Font.PLAIN,DEFAULT_SIZE));
}
public void insertUpdate(DocumentEvent e)
{
label.setFont(new Font((String)faceCombo.getSelectedItem(),Font.PLAIN,DEFAULT_SIZE));
}
public void changedUpdate(DocumentEvent e)
{
label.setFont(new Font((String)faceCombo.getSelectedItem(),Font.PLAIN,DEFAULT_SIZE));
}
}
}
可是就不明白了,还是不可以这样加监听器的呢?麻烦你了,谢谢
s.addDocumentListener(new Aa());
-----------
String类哪有这样的方法?当然通不过编译了?
你的想法就是想对 JComboBox 的每个项添加相应,对不?那直接监听 JComboBox 就行了,对里面的每个内容添加监听器好像没有听过,我不会。
再等等高手吧。