1

ユーザーがメッセージを入力できるようにするプログラムに取り組んでいます。ユーザーがフレームにある「メッセージ」メニュー項目を押すと、JOptionPane入力ダイアログ ボックスがポップアップ表示され、文字列を入力するように求められます。問題は、その文字列を取得して、パネル クラスに貼り付けなければならないことです。さらに、ユーザーがフレーム内にある別のメニュー項目を押したときに、別のダイアログ ボックスから形状と色を選択できるようにします。文字列は、私が描いた形状の上になければなりません。ドローストリングを試してみましたが、正しく機能していません。これが機能していない私のコードです。で OK を押したときに、パネルに文字列を描画したいだけですJOptionPane。どうすればいいですか?

私のフレームで

private void messageItemActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:

    String message = JOptionPane.showInputDialog("Enter your string");

    // my panel
    drawP.setMessage(message);

}

私のパネルで

public void setMessage(String s) {
    message = s;
}

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);

    // the user can select two different shapes this is
    // a boolean
    if (shape == true) {
        g.setColor(shapeColor);
        g.fillRect(x, y, 40, 40);
        g.drawString(message, x, y);

    } else {
        g.setColor(shapeColor);
        g.fillOval(x, y, 40, 40);
        g.drawString(message, x, y);
    }
}
4

1 に答える 1

1

メッセージを設定した後、repaint()を呼び出しましたか? 以前試してみたところ、JFrameの再描画はうまくいかないようですが、JPanelの再描画は機能します。

于 2012-07-19T01:37:12.993 に答える