java小程序选项不会在每次更改选项项(列表)时调用项状态更改方法。为什么?
代码:每次我更改列表浏览器的项(列表项/选项)时,它都会调用itemStateChanged()
和repaint()
。但这在操作系统列表的情况下是不一样的,它不调用它的项itemStateChanged()
不知道为什么,但是lister附加到这两个项上
import java.applet.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class AppletList extends Applet implements ItemListener {
String msg = "";
Choice browser, os;
public void init() {
setForeground(Color.red);
browser=new Choice();
os=new Choice();
browser.addItem("Explorer");
browser.addItem("Chrome");
browser.addItem("Mozilla");
os.addItem("Windows");
os.addItem("Mac");
add(browser);
add(os);
os.addItemListener(this);
browser.addItemListener(this);
}
@Override
public void itemStateChanged(ItemEvent e) {
repaint();
}
public void paint(Graphics g){
msg="Browser : ";
msg+=browser.getSelectedItem();
g.drawString(msg, 6,120);
msg="OS :+ ";
msg+=os.getSelectedItem();
g.drawString(msg, 6, 140);
}
}
# 1 楼答案
您使用的是哪个版本的Java和操作系统?你的小程序在我的笔记本电脑上运行良好(使用Java 8和Windows 8.1)
按照MadProgrammer的(一些)建议,切换到Swing并使用
JLabel
,您可以尝试一下这段代码(我同意使用Swing和常规组件更好,也许它甚至可以解决您机器上的问题):