• ベストアンサー

フレーム上のコンポーネントの削除について

フレーム上の表示内容を切り替えるために、 それまでフレーム上にあったチョイス(choice)を remove(choice1)メソッドで削除して、その場所に(その上に)画像(image)を表示したいと思うのですが、 チョイスは消えて表示されなくなるのですが、 チョイスのあったところだけ画像が表示されません。 チョイスの影響を消して、普通に画像を表示するにはどうしたらよいでしょうか。よろしくお願いします。 choice1.setLayout(null); choice1.setBounds(500,300,100,20); のように、nullレイアウトにしてあります。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • kacchann
  • ベストアンサー率58% (347/594)
回答No.1

>remove(choice1)メソッドで削除 >チョイスは消えて表示されなくなる >チョイスのあったところだけ画像が表示されません 「『チョイス』以外にそこにまだ 不要なごみコンポーネントが追加されてるから (つまり削除してない「何か」があるから)」。 どのコンポーネントになにをどれだけ追加(add)したのか、 自分のソースコードを 再点検しましょう。

taro5088
質問者

お礼

ご回答ありがとうございます。点検してみたのですが、上記以外のコンポーネントはありませんでした。 ただ、いろいろと試していたら、コンポーネントを削除すると、コンポーネントの付近だけrepaint()で再描画されることが分かりました。そのときに、repaint()メソッド内の書き方がまずく、その部分だけうまく描画されないことがわかり、修正したらうまくいきました。どうもありがとうございました。

関連するQ&A

  • フレームにJPEGを表示させたい

    JAVAアプレットでフレームを作成しました。 そこにJPEGの画像を表示させようと思い、下記のようにしました。 class TestFrame extends Frame { Image image; TestFrame(String title) { super(title); setLayout(null); image = getImage(getDocumentBase(), "A1.jpg"); } public void paint(Graphics g){ g.drawImage(image,300,300,this); } } しかし、上記をコンパイルすると 「image = getImage(getDocumentBase(), "A1.jpg");」の所でコンパ イルエラーが発生しました。 色々調べた所「public URL getDocumentBase()ドキュメントの URL を返します。戻り値:アプレットを含んでいるドキュメントの URL」 と言うことでした。 つまりgetDocumentBaseが使えないみたいです。 ではどうやってフレームにJPEGの画像を表示させればいいのでしょうか?

    • ベストアンサー
    • Java
  • 「継承されたメソッドの可視性を下げることは出来ません。」というエラーの

    「継承されたメソッドの可視性を下げることは出来ません。」というエラーの意味がわかりません。  JAVA初心者です、宜しくお願いします。  下のようなコードを書きましたが、"void paint(Graphics g)"の箇所で 「Canvasから継承されたメソッドの可視性を下げることは出来ません。」 とのエラーメッセジが出ました。  "public void paint(Graphics g)"とかくと、エラーは消えました。  何故"public"をつける必要があるのでしょうか。  また、クラス自身には、publicをつけない場合には、publicと見なされると本で読みましたが  メッソドにはこのようなルールはないのでしょうか。 ======================================= public class Canvas_test extends Canvas { public static void main(String[] args) { JFrame frame = new JFrame(); frame.setTitle("Canvas_test"); frame.setBounds(0,0,480,380); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(false); frame.setLayout(null); JPanel cp = new JPanel(); cp.setLayout(null); frame.add(cp); cp.setBounds(38,20,400,300); Canvas canvas = new Canvas_test(); cp.add(canvas); canvas.setBounds(0,0,400,300); frame.setVisible(true); } void paint(Graphics g) { g.drawString("aaaa",40,40); } } ========================================

    • ベストアンサー
    • Java
  • JAVAプログラミング

    プログラミングについて質問があります 割り勘ソフトを作りたいのですが button1を押したときに int i = Integer.parseInt(kazu.getText()); int e = Integer.parseInt(kane.getText()); int a = e/i; String s = String.valueOf(a); this.an.setText(s); というプログラムを実行したいのですが button1のクリック処理?イベント処理?というのはどのように書けばいいのでしょうか レイアウトは完成しているので ↓に付け足すような形でお願いします プログラミングの質問をするのは初めてなので何かおかしなところや足りないところがあれば教えてください public class jFram { public static void main(String[] args) { JFrame mainFrame = new JFrame("1"); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainFrame.setSize(500,500); mainFrame.setResizable(false); mainFrame.setVisible(true); Container cont = mainFrame.getContentPane(); JButton button1 = new JButton("計算"); final JTextField kane = new JTextField(); final JTextField kazu = new JTextField(); JLabel mony = new JLabel("料金"); JLabel ninz = new JLabel("人数"); JLabel an = new JLabel("a"); button1.setLayout(null); cont.add(button1); button1.setBounds(40,380,100,30); button1.setBackground(Color.blue); kane.setLayout(null); cont.add(kane); kane.setBounds(160,340,100,30); kazu.setLayout(null); cont.add(kazu); kazu.setBounds(160,300,100,30); mony.setLayout(null); cont.add(mony); mony.setBounds(40,340,100,30); ninz.setLayout(null); cont.add(ninz); ninz.setBounds(40,300,100,30); an.setLayout(null); cont.add(an); an.setBounds(160,380,100,30); cont.setLayout(null); JPanel a = new JPanel(); a.setLayout(null); mainFrame.setVisible(true); } }

    • ベストアンサー
    • Java
  • フレームの×ボタンを押しても閉じることが出来ない

    JAVAアプレットでプログラムを作成していまして、FileInputStreamで 取り込んだデータをフレームに表示させたんですが、表示させたフレーム のボタン(ウィンドウ右上の×ボタンなど)何を押しても終了できないんです。 それで色んな所で探していて、フレームを閉じる処理が見つかったので、 それを追加してみましたが、それもだめです。 これはどのようにすればよろしいのでしょうか? 下記にソースを記述しておきますので、悪い点がございましたら教えてください。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.io.*; import java.lang.*; class frame extends Frame implements WindowListener { Color bgcolor; Font font; Label lab_1,lab_2; frame() { super("title"); setLayout(null); bgcolor = new Color(240,248,255); setBackground(bgcolor); setForeground(Color.black); addWindowListener(this); font = new Font("Serif",Font.PLAIN,13); /* Labelを作成 */ lab_1 = new Label(); lab_2 = new Label(); lab_1.setFont(font); lab_1.setText("TEST1"); lab_1.setBounds(20,20,60,30); add (lab_1); lab_2.setFont(font); lab_2.setText("TEST2"); lab_2.setBounds(80,20,60,30); add (lab_2); } protected void processWindowEvent(WindowEvent endEvent) { System.exit(0); } }

    • ベストアンサー
    • Java
  • レイアウトnullの環境で、ウィンドウサイズの変更に対応して各コンポーネントが適切に表示されるには?

    線やイメージなどのグラフィックス関係では、ウィンドウサイズを変更しても、paintメソッドで各グラフィックスを相対的に定義しておけば、サイズ変更などしてもその都度呼び出されるので問題ないのですが、それがボタンやラベル、コンボボックスなどのコンポーネントの場合ではどうすればよいのでしょうか? レイアウトマネージャを使用すれば、サイズを変更したりしてもそれに対応できるのは分かっているのですが、レイアウトマネージャだと自由にコンポーネントを置けないので、レイアウトnullでやりたいのです。 レイアウトnullの場合でもそれは可能なのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • 異なるフレームへの画像表示

    こんにちは。初心者なのでやりたいことが伝わるかわかりませんがよろしくお願いします。 HPビルダーを使ってHPを作成中です。 フレームを利用していますが、(A.B.C)Bフレームのに画像1(絵)をおき、この上をポインターが通ると フレームAの所定の場所に画像が現れるようにしたいのです。 Bフレームの画像(絵)は1だけでなく2.3.4.5.6.といった具合にたくさんありそれぞれが示す画像がAフレームの場所に入れ替わって表示されるということはできるのでしょうか? Bフレームの画像1≠Aフレーム画像ではありません。 このようなことができる機能に名前はありますか? よろしくお願いします。

  • JPanelでコンポーネントを割り込ませたい

    JPanelのレイアウトについて質問させて頂きます。 JPanel内のコンポーネントの設置方法で、やってみたいことがあるのですが、やり方が解らず困っています。 やりたい内容としては、まず、A,B,C,D,Eを設置した後にFを設置する、という順番にコンポーネントを追加していくとします、現在の状態がsetLayout(new BoxLayout(this,BoxLayout.Y_AXIS))を使って A B C D E F といったような並びになるのですが、これを F E D C B A のように、後から追加した物が上に来るように設置したいのです。 BoxLayoutでは上から下に順に配置していくことしかできませんし、他のFlowLayoutやCardLayout等を調べてみても、このように後から追加したものを一番上に割り込ませて設置するようなレイアウトは見つかりませんでした。 自前でコンポーネントの内容を入れ替えるようなメソッドを作って対処するしかないのでしょうか? 何か良い方法をご存知の方が今したら、解答頂けると助かります、宜しくお願いします。

    • ベストアンサー
    • Java
  • 画像の表示について(初心者より)

    今、eclipseを使用して任意の画像の表示をするプログラムを作ってるのですが、JFrameを使用しメニューを実装した上で画像を表示させると画像の裏にメニューのリンク(というのかわかりませんが)が表示されてしまいます。どのように表記すればいいのでしょうか?関係ありそうな部分を記載しますのでご教授おねがいします。 public myimage(){ try { bimage = ImageIO.read(new File"sample.jpg")); } catch (Exception e) { e.printStackTrace(); bimage = null; } JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(0,0,640, 480); frame.getContentPane().add(c); frame.setJMenuBar(buildMenu()); frame.setLocationRelativeTo(null); frame.setVisible(true); }

  • 上のフレーム内のプルダウンメニューが下のフレームに隠れてしまい、困っています

    ホームページビルダーでホームページを作成しています。上下分割フレームの上のフレームで作成してあるプルダウンメニュー(レイアウト枠)を下のフレームに表示する方法を教えてください。フレーム境界線を上に上げていくと、プルダウンメニューが下のフレームに隠れてしまいます。よろしくお願いします。

  • getSelectedIndexでコンパイルエラー

    コンボボックスのインデックス値を取得したいのですが、System.out.println(cb.getSelectedIndex());でコンパイルエラーが出ます。 いろいろ調べてやってみましたが、どこが間違っているのかよく分かりません。 全くの初心者ですので、よろしくお願いします。 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class cbx{ private JFrame frame; private JPanel panel; private JComboBox cb; public cbx(){ frame = new JFrame("題名"); //コンテンツ区画の取得 Container cont = frame.getContentPane(); //レイアウトマネージャーを使わない cont.setLayout(null); //パネルを作成してレイアウトをセット panel = new JPanel(); panel.setBackground(Color.WHITE); //コンボボックスを作成 JComboBox cb = new JComboBox(); cb.addItem("選択"); cb.addItem("レベル1"); cb.addItem("レベル2"); cb.addItem("レベル3"); cb.addItem("レベル4"); cb.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { System.out.println(cb.getSelectedIndex()); } }); //コンテンツ区画に追加 cont.add(panel); cont.add(cb); // setBounds(左上X座標,Y座標,幅,高さ) cb.setBounds(20,280,200,30); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(100, 100, 600, 400); frame.setVisible(true); } // main メソッドの定義 public static void main(String args[]){ cbx application = new cbx(); } }

    • ベストアンサー
    • Java