3

摂氏を華氏に変換する単純なアプレットである次のコードがあります。

正しい数値を入力してボタンを押すと、温度換算されて問題なく表示されます。ただし、テキスト ボックスに無効なエントリが含まれている場合は、エラー パネルのラベルにメッセージを表示する必要がありますが、アプレットのサイズを変更しない限り、これは発生しません。そこで問題は「どうやって塗り直すか!!!」

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);

}

}

誰でもこれを理解できますか?ラベルのサイズの問題を考えていましたが、それについてはわかりません。

4

2 に答える 2

1

これを試して :

    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(" ");
                this.repaint();
            }
            catch(NumberFormatException ex){
                lblError.setText("Invalid Celsius Value");
            }
        }
    });
于 2013-02-23T00:16:47.137 に答える
0
  1. JApplet を拡張し、html ページのタグでアプレットの高さを大きくします
  2. グリッド レイアウトを使用してサイズを設定することはできません。独自のサイズを使用する場合は、setLayout Manager をアプレットの null として設定し、次に setBounds
  3. 1 と 2 が機能しない場合は、コンポーネントで invalidate を呼び出して lblError.invalidate() を強制的に再描画します。

null レイアウト マネージャーと set Bounds について: これはすべての OS (Apple、unix、windows、および linux でテスト済み) で動作しますが、教科書では実際にはレイアウト マネージャーを使用すると書かれていますが、私のテストでは最大 1000x800 のサイズのピクセルを使用しているため、かなり間抜けです。 12年間。サンプル画像 xy ; スクラブルラック; 情報キャプチャ

javadocの無効化、再描画、再描画の無視について参照

于 2013-04-02T18:06:12.043 に答える