【发布时间】:2013-02-08 17:28:24
【问题描述】:
我有以下代码,它是一个将摄氏温度转换为华氏温度的简单小程序。
如果输入正确的数字并单击按钮,温度将被转换并显示没有问题。但是,如果文本框包含无效条目,则需要在错误面板上的标签上显示一条消息,但除非我调整小程序的大小,否则不会发生这种情况。所以问题是“如何重绘!!!”
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TemperatureConverter extends Applet{
private JLabel lblCel=new JLabel("Celsius Temperature :");
private JLabel lblFar=new JLabel("Fahrenheit value :");
private JLabel lblResult=new JLabel("");
private JLabel lblError=new JLabel("");
private JTextField txtFahr;
private JPanel celsPanel;
private JPanel farPanel;
private JPanel errorPanel;
private JButton btnEnter = new JButton("Convert");
public double temp = 0.0;
public void init(){
celsPanel = new JPanel(new GridLayout(1,3,2,2));
celsPanel.add(lblCel);
txtFahr = new JTextField(50);
celsPanel.add(txtFahr);
btnEnter.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
try{
temp = Double.parseDouble(txtFahr.getText());
double X = (temp - 32)* 0.69;
lblResult.setText(String.valueOf(X));
lblError.setText(" ");
}
catch(NumberFormatException ex){
lblError.setText("Invalid Celsius Value");
}
}
});
celsPanel.add(btnEnter);
farPanel = new JPanel(new GridLayout(1,2,2,2));
farPanel.add(lblFar);
lblResult.setSize(100, 30);
farPanel.add(lblResult);
errorPanel = new JPanel();
lblError.setSize(100, 30);
errorPanel.add(lblError);
setLayout(new GridLayout(3,2,2,2));
add(celsPanel);
add(farPanel);
add(errorPanel);
setSize(550,200);
}
}
任何人都可以解决这个问题吗?我在考虑标签尺寸问题,但后来我不确定。
【问题讨论】:
-
为什么这个问题值得 -1 ?似乎拒绝投票已成为这里某些人的“民族运动”:O
-
我也不明白反对票。
-
@deau 是的......不幸的是......管理员需要解决这种欺凌问题,就像他们要求人们在询问任何事情之前“做好功课”一样
-
@deau 一个小程序(
Applet或JApplet)没有pack()方法,但代码应该调用validate()。