【发布时间】:2015-04-25 16:01:06
【问题描述】:
我正在学习构建一个 JApplet,尽管到目前为止还没有深入了解。我有一个图像(.png),理想情况下,它会在“绘制”界面之前由paintComponent(s)绘制,或者更确切地说是从paint()方法中添加。
有趣的是,JApplet 仅在被 appletviewer 克隆后才按预期加载。似乎我缺少对生命周期或运营动态的理解。
这里是代码,swing comp.为简洁起见,已删除定义:
public class JFriendsPhones extends JApplet implements ActionListener, MouseListener {
public void init(){
submit.addActionListener(this);
queryByName.addActionListener(this);
queryByNum.addActionListener(this);
setVisible(true);
introduction = getGraphics();
prepareImage(intro, this);
intro = getImage( getCodeBase(), "introduction.png");
setVisible(true);
validate();
}
public void start(){
}
public void paint(Graphics g){
paintComponent(g);
}
public void stop(){
}
public void destroy(){
}
public void actionPerformed( ActionEvent ev ){
Object source = ev.getSource();
returnLab.setVisible(false);
resultsPan.setBackground(Color.white);
if( true ){
if( queryByName.getText().equals("") != true && queryByNum.getText().equals("") != true ){
outcomeLab.setText("Search by only one term");
queryByName.setText("");
queryByNum.setText("");
} else if( queryByName.getText().equals("") == true && queryByNum.getText().equals("") == true){
outcomeLab.setText("Enter search term");
} else {
if(queryByName.getText().equals("") == false){
for( int i = 0; i < 5; i++ ){
if(queryByName.getText().equalsIgnoreCase(friends[i])){
resultsPan.setBackground(new Color(190,255,200));
outcomeLab.setText("1-result found:");
returnLab.setText(frNumbers[i]);
returnLab.setVisible(true);
found = true;
}
} if(found == false){
resultsPan.setBackground(new Color(240,100,100));
outcomeLab.setText("0-matches");
}
} else {
for( int i = 0; i < 5; i++ ){
if(queryByNum.getText().equalsIgnoreCase(frNumbers[i])){
resultsPan.setBackground(new Color(190,255,200));
outcomeLab.setText("1-result found:");
returnLab.setText(friends[i]);
returnLab.setVisible(true);
found = true;
}
}
if( found == false){
resultsPan.setBackground(new Color(240,100,100));
outcomeLab.setText("0-matches");
}
}
}
}
found = false;
}
public void componentResized( ComponentEvent cEv){
repaint();
}
@Override
public void componentMoved(ComponentEvent e) {
contain.repaint();
}
@Override
public void componentShown(ComponentEvent e) {
paintComponent(introduction);
}
@Override
public void componentHidden(ComponentEvent e) {
// TODO Auto-generated method stub
}
public void mouseClicked( MouseEvent clicked){
repaint();
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
public void paintComponent(Graphics gr){
super.paintComponents(gr);
if(initialized == false){
gr.drawImage(intro, 10, 10, 280, 430, this);
validate();
initialized = true;
} else {
titl_instrPan.add(titleLab);
titl_instrPan.add(instructLab);
titl_instrPan.add(instructLab2);
inputPan.add(byNameLab);
inputPan.add(queryByName);
inputPan.add(byNumLab);
inputPan.add(queryByNum);
inputPan.add(regionPan);
inputPan.add(submit);
resultsPan.add(outcomeLab, BorderLayout.NORTH);
resultsPan.add(returnLab, BorderLayout.SOUTH);
resultsPan.setBackground(Color.white);
mainPanel.add(titl_instrPan, BorderLayout.NORTH);
mainPanel.add(inputPan, BorderLayout.CENTER);
mainPanel.add(resultsPan, BorderLayout.SOUTH);
contain.add(mainPanel);
setVisible(true);
validate();
}
} end class JFriendsPhones
【问题讨论】:
-
“我正在学习构建 JApplet” 为什么要编写小程序?如果是老师指定的,请参考Why CS teachers should stop teaching Java applets。
-
有趣。我同意来自安全问题和 awt 过时的反对意见。谢谢,安德鲁
标签: java awt lifecycle japplet