• 締切済み

JavaのJButtonについて。

JavaのJButtonについて質問です。 ボタンの色をbt.setBackground(new Color(255,127,80));で変更した後、デフォルトのボタンに戻すには、どのように記述すれば良いのでしょうか。 回答お願いします。

  • pi_17
  • お礼率75% (9/12)
  • Java
  • 回答数2
  • ありがとう数2

みんなの回答

回答No.2

getBackgroundで取得できませんか?

pi_17
質問者

お礼

お礼が遅くなり申し訳ありません。 getBackgroundを試してみたのですが、JButtonの色を取得するというのはできないみたいです。 他によい方法がないか考えてみたいと思います。 何度も回答ありがとうございました。

回答No.1

変更する前に最初の色を覚えておいて、戻したいときに覚えておいた色で戻せばいいんではないでしょうか。

pi_17
質問者

補足

回答ありがとうございました。 初期状態の色を自分で設定した場合、ProKasaifuさんからの回答で解決できると思います。 しかし私は、自分で色を設定していないデフォルトのボタンに戻したいのです。 そのデフォルトのボタンが何色なのかがわからず困っています。 または、ボタンの色を取得する方法があるのでしょうか。 ご存知の方がいらっしゃいましたら、回答お願いします。

関連するQ&A

  • JButtonのバックカラーについて

    質問させてください。 Win2000,JBuilderを使用しています。 この環境で作成したjarファイルをWinXPで起動してUIを確認したところ、 JButtonのバックカラーがボタン全体ではなくボタンの周りの輪郭部分のみ変更されていました。 (jbtn.setBackground(Color.pink) ); Win2000で起動すると正常にボタンのバックカラーが塗られています。 ちなにみJtextFieldなどのバックカラーはXPでも正常に表示されています。 XPではボタンの色は輪郭部分しか変更できないのでしょうか? どなたか詳しい方がいらしたら教えてください。

    • ベストアンサー
    • Java
  • JButtonの改行したラベルがリロードで消える

    JavaAppletでJbuttonに表示する文字列の改行を実現した サンプルページを参考にボタンを作成し、IE上で表示させたのですが 初期表示は問題なく動作するものの、表示したページを 再読込(リロード)すると、文字が消えてしまいます。 (再読込後の画面コピーを添付します) リロード時にもボタンに表示された文字を表示させるためには ブラウザの設定変更やコードの修正が必要なのでしょうか? 以下は、実行環境及びコードです。 環境 OS:WindowsXP ブラウザ:IE7 JRE:1.6.0_26 ※クラスファイル、HTMLファイルともにCドライブ直下に配置し実行。 ソース ○test.java import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JPanel; public class test extends JApplet { private static final long serialVersionUID = 1L; JButton button; public void init() { setBackground(Color.WHITE); setLayout(new BorderLayout()); button = new JButton("<html>改行<br />ボタン</html>"); button.setPreferredSize(new Dimension(120,80)); JPanel panel = new JPanel(); panel.setBackground(Color.WHITE); panel.add(button); add(panel, BorderLayout.CENTER); } } ○test.html <html> <head></head> <body> <applet code="test.class" WIDTH=120 HEIGHT=100> </applet> </body> </html>

    • ベストアンサー
    • Java
  • ボタンの背景色について

    先日の質問の返事も書けていないのにすみません。 サンプルも用意する余裕が無かったので 文章での質問となってしまいます。 デフォルトで作成した JButton の背景色を button.setBackground(Color.GRAY); という形で一度色を変更します。 その後にデフォルトで作成したような メタリックなデザインに戻したいときは どうしたら良いのでしょうか? setBackground() ではできませんよね。

    • ベストアンサー
    • Java
  • WinXP JButtonのバックカラーについて

    質問させてください。 XPで以下のように LookAndFeelをセットすると、 new JButton().setBackGround(Color.red); でボタンの背景色が変更できずに、ボタンの輪郭部分の色が変更されてしまいます。 try{ UIManager.setLookAndFeel  UIManager.getSystemLookAndFeelClassName());    } catch(Exception e){ } XPのシステムの設定でしかたなさそうですが、 先ほどの回答していただいた方によると、JButtonを継承したクラスを作成して使えばできそうとあったのですが、 具体的な方法がわかりません。 どなたか詳しい方がいらしましたらたら、クラシック表示にしないで、このLookAndFeelの設定でJButtonの背景色を変更する方法を具体的に教えてください。 よろしくお願いいたします。

  • javaのプログラムについての質問です。

    javaのプログラムについての質問です。 javaについて、あまり詳しくないので質問させていただきます。 ボタンを押して円などの色を変えるプログラムで、2色を変える(黄→赤)if文は public void actionPerformed(ActionEvent e) { if (bool) { setBackground(Color.yellow); this.bool = false; } else { setBackground(Color.red); this.bool = true; の様にfalseとtrueを使えばできるのですが、もし3、4色の場合はif文の中をどうしたら良いですか? できれば、ボタンを押すたびに黄→赤→黒→黄…など3~4色のループするようにしたいです。 いろいろ考えたのですが、うまくいきません。どなたか教えて下さい。

    • ベストアンサー
    • Java
  • JavaのSwingのレイアウト

    Swingを学習中ですが、うまくレイアウトできません。 添付した画像のようなレイアウトにしたいです。 作ってみたものは以下です。 import java.awt.BorderLayout; import java.awt.Color; import javax.swing.*; public class LayoutTest { public static void main(String[] args) { JFrame frame = new JFrame(); JPanel panel = new JPanel(); JTextField searchFiled = new JTextField("テキスト"); String[] comboboxString = {"C", "C++", "Java"}; JComboBox comboBox = new JComboBox(comboboxString); JButton button = new JButton("ボタン"); panel.add(comboBox, BorderLayout.EAST); panel.add(searchFiled, BorderLayout.CENTER); panel.add(button, BorderLayout.WEST); frame.add(panel, BorderLayout.PAGE_START); JPanel redPanel = new JPanel(); redPanel.setBackground(Color.RED); frame.add(redPanel); frame.setSize(700, 500); frame.setLocationRelativeTo(null); frame.setVisible(true); } }

    • ベストアンサー
    • Java
  • javaについて質問

    import javax.swing.*; import java.awt.Color; import java.awt.Graphics; import java.awt.event.*; public class tt extends JFrame { public tt(){ setTitle("hogehoge"); setBounds( 10, 10, 300, 200); JButton btn1 = new JButton("続ける"); final JPanel p = new JPanel(); p.setBackground(Color.white); btn1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event){ } } ); p.add(btn1); getContentPane().add(p); } public static void main(String[] args){ tt test = new tt(); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); /* 実際に表示する */ } } Graphics g; g.drawString("ほげさんじょう",130,120);を追加しても コンパイルが通りません。 どうすれば画面に文字列を表示するんですか? あとテキストフィールドを追加するさいに、座標していとかして追加できないんですか?

  • javaで起こったバグ?!

    私が普段プログラムを書いてコンパイルすると、ほぼ確実といってもいいくらいにおかしなことが起きます。 ボタンを配置して、処理を書きます(ここではJTableが現れるという処理にします)、そしてコンパイルします、コンパイルは通ります、ウィンドウが現れます、ボタンを押したら処理が起きてJTableが現れるはずなのですが、ボタンを押すとコマンドプロンプトでわけわからん英語や数字が現れます(出力される)。 自分の書いたプログラムをeclipseでコピペしても、問題はありませんでした。 コマンドプロンプトを一度消して、直ったプログラムもあります。また、その逆に何度やっても直らないものもあります。 ↓私の書いたプログラムです。おかしいところ等がありましたらご指摘下さい。また解答者様のPCでコピペして、試してみて下さい。 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Sukejuru extends JFrame implements ActionListener { JPanel p; public static void main(String args[]) { Sukejuru ske = new Sukejuru(); ske.setBounds(200,200,600,300); //大きさ&ウィンドウの位置 ske.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//クローズ ske.setVisible(true); } Sukejuru() { super("Myスケジュール"); JPanel p = new JPanel(); p.setBackground(Color.green); add(p); JButton b1 = new JButton("一月"); b1.addActionListener(this); b1.setActionCommand("b1"); p.add(b1); JButton b2 = new JButton("二月"); b2.addActionListener(this); b2.setActionCommand("b2"); p.add(b2); JButton b3 = new JButton("三月"); b3.addActionListener(this); b3.setActionCommand("b3"); p.add(b3); } public void actionPerformed(ActionEvent e) { JTable table = new JTable(5,5); JScrollPane sp = new JScrollPane(table); p.add(sp); } }

    • ベストアンサー
    • Java
  • javaのGridLayout(..)について

    下記のコードの感じで、GridLayout(3, 16)で、buttonを48個配置していますが、ボタンの縦幅を短く するために、setPreferredSize(new Dimension(43,20));を使用していますが効果が無い様です。 Q1)ボタンの縦幅を短くする方法として、どの様な方法がありますか? 注)この48個のボタンは、southのpaneに配置しており、southのpaneの縦方向の長さを短く してみましたが、効果がありませんでした。 全コードを表示出来なくて御免なさい。 //================================== GridLayout layout = new GridLayout(3, 16); layout.setHgap(2); layout.setVgap(2); p.setLayout(layout); LineBorder border = new LineBorder(Color.BLACK, 1, true); button1=new JButton("dsp_SNIM"); modify_button(button1, border); //button1 SPAN=new JTextField("1"); modify_jtext(SPAN, border); //button2 //=================================== button3=new JButton("Sgl_srt"); modify_button(button3, border); //button3 void modify_button(JButton button, LineBorder border){ button.addActionListener(new TimButton1()); button.setPreferredSize(new Dimension(43,20)); button.setBorder(border); button.setBackground(new Color(0xC0,0xC0,0xC0)); //SILVER; button.setBorderPainted(true); button.setMargin(new Insets(10, 10, 10, 10)); }

    • ベストアンサー
    • Java
  • javaのボタン表示等に関する質問

    下記のコードはフォームをNORTH、CENTER、SOUTHEに分割して、それぞれのpaneに ラベルとボタンを表示するものです。 Q1)myFrame.setBounds(350,0, total_x, total_y)をコンストラクターの最初に記述しますと  フォームの表示が正常でなく、コンストラクターの最後では、正常に行なわれます。  この理由等について、コメント頂けますと有り難いです。 Q2)mainに記述してある、下記のコードは無くても、Xでクロースできますが,このコード  の記述は正しいでしょうか GridLayout_new frame = new GridLayout_new(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 以上お手数ですが、コメント頂けますと大変助かります。 //============================================= import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.LineBorder; public class GridLayout_new extends JFrame{ int panelA_x=200, panelA_y=50; int panelB_x=200, panelB_y=200; int panelC_x=200, panelC_y=50; int total_x=panelA_x; int total_y=panelA_y+panelB_y+panelC_y; public static void main(String[] args){ GridLayout_new frame = new GridLayout_new(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } GridLayout_new(){ JFrame myFrame=new JFrame(); myFrame.setTitle("panelA"); // myFrame.setBounds(350,0, total_x, total_y); //正常なformの表示が出来ない myFrame.setVisible(true); LineBorder border = new LineBorder(Color.BLACK, 1, true); //======================== JLabel button1=new JLabel("Label1"); GLabel_Layout(button1, border); JButton button2 = new JButton("button2"); button_Layout(button2, border); //======================== JLabel button3=new JLabel("Label3"); GLabel_Layout(button3, border); JButton button4 = new JButton("button4"); button_Layout(button4, border); //======================== JLabel button5=new JLabel("Label5"); GLabel_Layout(button5, border); JButton button6 = new JButton("button6"); //======================== JLabel button7=new JLabel("Label7"); GLabel_Layout(button7, border); JButton button8 = new JButton("button8"); //======================== JLabel button9=new JLabel("Label9"); GLabel_Layout(button9, border); JButton button10 = new JButton("button10"); button_Layout(button10, border); //======================== JLabel button11=new JLabel("Label11"); GLabel_Layout(button11, border); JButton button12 = new JButton("button12"); button_Layout(button12, border); //================================== JPanel p1 = new JPanel(); GridLayout layout1 = new GridLayout(2,2); //2行、2列の設定 layout1.setHgap(2); layout1.setVgap(10); p1.setLayout(layout1); p1.setBackground(Color.GREEN); p1.add(button1); p1.add(button2); p1.add(button3); p1.add(button4); myFrame.setSize(panelA_x, panelA_y); myFrame.getContentPane().add(p1, BorderLayout.NORTH); //============================== JPanel p2 = new JPanel(); GridLayout layout2 = new GridLayout(2,2); //2行、2列の設定 layout2.setHgap(2); layout2.setVgap(10); p2.setLayout(layout2); p2.setBackground(Color.GREEN); p2.add(button5); p2.add(button6); p2.add(button7); p2.add(button8); myFrame.setSize(panelB_x, panelB_y); myFrame.getContentPane().add(p2, BorderLayout.CENTER); //================================== JPanel p3 = new JPanel(); GridLayout layout3 = new GridLayout(2,2); //2行、2列の設定 layout3.setHgap(2); layout3.setVgap(10); p3.setLayout(layout3); p3.setBackground(Color.GREEN); p3.add(button9); p3.add(button10); p3.add(button11); p3.add(button12); myFrame.setSize(panelC_x, panelC_y); myFrame.getContentPane().add(p3, BorderLayout.SOUTH); myFrame.setBounds(350,0, total_x, total_y); //正常なformの表示 } //constructor void GLabel_Layout(JLabel label, LineBorder border){ label.setPreferredSize(new Dimension(80,20)); label.setBorder(border); label.setBackground(Color.lightGray); label.setOpaque(true); } void button_Layout(JButton button, LineBorder border){ button.setPreferredSize(new Dimension(80,20)); button.setBorder(border); } } //main class....GridLayout_new

    • ベストアンサー
    • Java