0

私は初心者なので、しばらくお待ちください

私が欲しいもの

JButton、JLabel、および JTextArea がある JPanel があります。JButton を押すと、JLabel 内 (および JTextArea 内の一部のテキスト) にイメージを印刷する必要があります。この特定の画像 (およびテキスト) は、if-else ステートメントによって決定されます。if-else の条件は整数変数 R に基づいています。

基本的には、私が作ろうとしている質問と回答のような調査です。R を使用して、ユーザーからの回答を記録します。ユーザーが選択肢をクリックすると、R の値が更新されます。

テキストでは正常に機能しますが、画像では機能しません。

テキストについては、文字列変数 yourphone を使用します。最終的に R の値が 120 の場合、携帯電話は文字列に更新されます。Xperia Z。

ユーザーが JButton をクリックしたときに Xperia Z の画像が表示されるように、画像に使用できる同様の変数が必要です。

R の合計値は、if-else ステートメントで使用されます。

構造

このような変数を開始します

int R=0;
String yourphone;
ImageIcon imageresult;

結果を表示するための私のJPanel

final JPanel result = new JPanel();
    result.setBackground(Color.BLACK);
    getContentPane().add(result, "name_17130054294139");
    result.setLayout(null);


    final JTextArea txtrphoneresult = new JTextArea();
    txtrphoneresult.setBackground(Color.BLACK);
    txtrphoneresult.setForeground(Color.YELLOW);
    txtrphoneresult.setFont(new Font("Tahoma", Font.PLAIN, 14));
    txtrphoneresult.setBounds(448, 515, 469, 121);
    result.add(txtrphoneresult);


    JLabel resultlabel = new JLabel(imageresult);
    resultlabel.setBounds(292, 122, 782, 346);
    result.add(resultlabel);




    JButton btnShowResult = new JButton("Show Result");
    btnShowResult.setFont(new Font("Tahoma", Font.PLAIN, 10));
    btnShowResult.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            if(R==1726)
            {
                yourphone = "Samsung Galaxy S4\r\nHTC One\r\nSony Xperia Z";
                ImageIcon imageresult = new ImageIcon("galaxy_one_XperiaZ.jpg");
            }
            else if(R==5002)
            {
                yourphone = "Sony Xperia Z1\r\nSamsung Galaxy Note 3";
                ImageIcon imageresult = new ImageIcon("Note3_sonyZ1.jpg");
            }
            else
            {
                yourphone = "No Results";
            }

            txtrphoneresult.setText(yourphone);

     }
     });
    btnShowResult.setBounds(618, 48, 130, 32);
    result.add(btnShowResult);

問題

画像がまったく表示されません。これを達成するための他の可能な方法がある場合は、ガイドしてください。

4

5 に答える 5

1

ラベルのアイコンをどこに設定しますか。あなたはこの行を見逃しています

resultlabel.setIcon(imageresult);
于 2013-11-06T08:13:38.063 に答える
1

最終resultLabel的な変更アクションを実行します。

public void actionPerformed(ActionEvent e)
            {
                ImageIcon imageresult = null;
                if(R == 1726)
                {
                    yourphone = "Samsung Galaxy S4\r\nHTC One\r\nSony Xperia Z";
                    imageresult = new ImageIcon("galaxy_one_XperiaZ.jpg");
                }
                else if(R == 5002)
                {
                    yourphone = "Sony Xperia Z1\r\nSamsung Galaxy Note 3";
                    imageresult = new ImageIcon("Note3_sonyZ1.jpg");
                }
                else
                {
                    yourphone = "No Results";
                }

                txtrphoneresult.setText(yourphone);
                resultlabel.setIcon(imageresult);

            }
于 2013-11-06T08:14:08.393 に答える
1

最初にimageresult内部を作成if-elseし、すべての方法で表示されません。に画像を追加しませんJLabel

resultlabel をクラス メンバーまたはfinal変数として作成します。次の方法でコードを変更します。

 public void actionPerformed(ActionEvent e) {

        ImageIcon imageresult = null;
        if(R==1726)
        {
            yourphone = "Samsung Galaxy S4\r\nHTC One\r\nSony Xperia Z";
            imageresult = new ImageIcon("galaxy_one_XperiaZ.jpg");
        }
        else if(R==5002)
        {
            yourphone = "Sony Xperia Z1\r\nSamsung Galaxy Note 3";
            imageresult = new ImageIcon("Note3_sonyZ1.jpg");
        }
        else
        {
            yourphone = "No Results";
        }

        resultlabel.setIcon(imageresult)
        txtrphoneresult.setText(yourphone);

 }
于 2013-11-06T08:14:10.533 に答える
1

ステートメントの前に ImageIcon imageresult を宣言ifして呼び出す

resultlabel.setIcon(imageresult)

txtrphoneresult.setText(yourphone);

ところで: null レイアウト/setBounds() を使用しないでください。レイアウトについて読んで、適切なものを選択してください。

于 2013-11-06T08:10:44.653 に答える