这里有两个.JAVA文件。importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.ItemEvent;importjava.awt.event.ItemListener;importjavax.swi...
这里有两个.JAVA文件。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
import java.awt.*;
import java.io.IOException;
public class CalWin extends JFrame{
final int WIN_W=225,WIN_H=320;
JTextField text1,text2,text3;
JPanel panelCommon,panelSuper;
Cal cal;
ButtonGroup bg;
public CalWin(){
cal=new Cal(this);
cSuper();
text2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
cal.getResult();
}
});
this.add(panelSuper);
double width = Toolkit.getDefaultToolkit().getScreenSize().width;
double height =Toolkit.getDefaultToolkit().getScreenSize().height;
setBounds((int)(width-WIN_W)/2,(int)(height-WIN_H)/2,WIN_W,WIN_H);
validate();
setResizable(false);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
public void cSuper(){
panelSuper=new JPanel();
panelSuper.setLayout(null);
text2=new JTextField(20);
text2.setBounds(5, 10,200,20);
text2.setHorizontalAlignment(JTextField.RIGHT);
text3=new JTextField(10);
text3.setEditable(false);
text3.setBackground(new Color(255, 255, 255));
text3.setHorizontalAlignment(JTextField.RIGHT);
JLabel label=new JLabel("=");
label.setBounds(5,40,20,20);
text3.setBounds(15, 40,180,20);
JLabel label2=new JLabel("输入式子如:-12+(1+2)*2^2-5/2");
label2.setBounds(4,70,200,20);
panelSuper.add(text2);
panelSuper.add(label);
panelSuper.add(text3);
panelSuper.add(label2);
}
public static void main(String[] args) {
new CalWin();
}
public void f(){
this.text3.setText("输入有误");
this.panelSuper.validate();
this.text3.repaint();
this.text3.validate();
this.panelSuper.repaint();
this.panelSuper.validate();
this.repaint();
this.validate();
System.out.println("执行啦");
}
}
还有一个
import java.util.ArrayList;
import java.util.HashMap;
public class Cal {
CalWin calwin;
public Cal(CalWin cw) {
calwin=cw;
}
public void getResult(){
try{
float f=Float.parseFloat(calwin.text2.getText());
}
catch(Exception e){
calwin.f();
try{
Thread.sleep(3000);
}
catch(Exception ee){}
move();
}
}
public void move(){
int x=calwin.getX();
int y=calwin.getY();
int n=8;
while(n>0){
if(n%2==0)
calwin.setLocation(x+5, y);
else
calwin.setLocation(x-5, y);
n--;
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
运行之后:输入a回车。为什么是先震动,然后再显示:输入错误。明明是先执行显示的。麻烦 给出解决方案
输出错误提示 是在sleep前面运行的。大家看看清楚先好不。。
还有就是f()函数里面有System.out.println("执行啦");
这个信息。这个输出语句也的的确确的执行了。但是它前面的this.text3.setText("输入有误");
却没有显示出效果。
this.panelSuper.validate();
this.text3.repaint();
this.text3.validate();
this.panelSuper.repaint();
this.panelSuper.validate();
this.repaint();
this.validate();
我用了这么多函数 都没有把它刷新出来
展开