У меня есть следующий код, который представляет собой простой апплет, который преобразует градусы Цельсия в градусы Фаренгейта.
Если введено правильное число и нажата кнопка, температура преобразуется и отображается без проблем. Однако, если текстовое поле содержит недопустимую запись, сообщение должно отображаться на метке на панели ошибок, но этого не произойдет, если я не изменю размер апплета. Так вот вопрос "Как перекрасить!!!"
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);
}
}
Кто-нибудь может это понять? Я думал о проблеме с размером этикетки, но тогда я не уверен в этом.
this.repaint();
stackoverflow.com/questions/5566994/ docs.oracle.com/javase/6/docs/api/java/awt/ - person Mehdi Karamosly   schedule 23.02.2013Applet
, либоJApplet
) не имеет методаpack()
, но код должен вызыватьvalidate()
. - person Andrew Thompson   schedule 23.02.2013