• ベストアンサー

swingのラジオボタンについて

たびたびすみません!! (1)ラジオボタンのアクションをどのように渡したらよいでしょうか? fontcolorActionをどこかにadd()しなければなりませんが group.add(fontcolorAction); button1.add(fontcolorAction); どちらもできません(泣 (2)setForeground()を使うと全部の文字の色が変換されてしまいます。選択した文字列の色や文字の大きさだけ変換するメソッドなどもないでしょうか?? (3)getContentPane().setBackground(Color.WHITE);を使うと表示されるウィンドウの中身が白色になると思うんですが薄紫色のままです。どうしたらよいでしょうか? public class NotePad3 extends JFrame { JDesktopPane desktop; JTextArea editArea = new JTextArea(); ButtonGroup group = new ButtonGroup(); JRadioButton button1 = new JRadioButton("black"); JRadioButton button2 = new JRadioButton("blue"); public static void main(String[] args){ NotePad3 frame = new NotePad3(); frame.setVisible(true); } public NotePad3(){ desktop = new JDesktopPane(); FontColorAction fontcolorAction = new FontColorAction(); JMenuBar mb = new JMenuBar(); JMenu sub11 = new JMenu("色"); group.add(button1); group.add(button2); sub11.add(button1); sub11.add(button2); getContentPane().add(desktop,BorderLayout.CENTER); getContentPane().setBackground(Color.WHITE); } class FontColorAction extends AbstractAction{ FontColorAction(){ } public void actionPerformed(ActionEvent e){ NoteFrame inframe = (NoteFrame)desktop.getSelectedFrame(); JTextArea ta = inframe.getTextArea(); if(e.getSource() == button1){ ta.setForeground(Color.black); }else if(e.getSource() == button2){ ta.setForeground(Color.blue); } } }

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

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

  • ベストアンサー
noname#49664
noname#49664
回答No.3

1.#1さんがおっしゃってるように、ボタンにaddActionListenerで組み込みます。 2.JTextAreaでは無理です。JTextPaneあたりを使うのが良いでしょう。以下にJTextPaneでスタイルを変更する方法の質問があがっています。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1364988 3.これは、内部フレームの背景色を変えたい、ということでしょうか。それとも外部ウィンドウのデスクトップの背景を変えたいということですか。  内部フレームなら、全体を覆っているJTextAreaのgetBackgroundになりますし、外部ウィンドウのデスクトップ部分の背景ならJDesktopPaneのgetBackgroundになります。

nilyannko
質問者

お礼

みなさんありがとうございます。 addActionListenerでできました。 というか基本的なことをもう少しきちんと 勉強しないといけないですよね。。 勉強しなおさないと(泣 みなさんありがとうございました

その他の回答 (2)

  • keroro001
  • ベストアンサー率23% (71/304)
回答No.2

(2).JTextAreaではできないはず (3).editAreaに対して行わなければいけないのでは?

  • keroro001
  • ベストアンサー率23% (71/304)
回答No.1

(1).addActionListener(listener)では?

関連するQ&A

  • JTextAreaを持ったJInternalFrameを作りたい

    swingでメモ帳を作っているのですが、 新規作成が押されるごとに新しい JTextAreaを持ったJInternalFrameを作りたいのです。 他にもコピーやJpopupメニューなども機能として 追加しているのですがそれらの機能も新しく作った JInternalFrameで機能するようにしたいんです。 参考になるサイトなど見たりしたんですが 自力では無理でした。。どなたかお願いします☆ public class NotePad extends JFrame{ JDesktopPane desktop = new JDesktopPane(); static JTextArea editArea = new JTextArea(); static NotePad frame = new NotePad(); public static void main(String[] args){ frame.setTitle("メモ帳"); frame.setSize(500,400); frame.setVisible(true); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); } public NotePad(){ JScrollPane sp = new JScrollPane(editArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); NewAction newAction = new NewAction(); JMenuBar mb = new JMenuBar(); JMenu mn1 = new JMenu("ファイル"); mn1.add(newAction); mb.add(mn1); setJMenuBar(mb); getContentPane().add(sp, BorderLayout.CENTER); } class NewAction extends AbstractAction{ NewAction(){ putValue(NAME, "新規ファイル作成"); public void actionPerformed(ActionEvent e){ JInternalFrame inframe = new JInternalFrame( true, true, true, true); JTextArea ta = new JTextArea(""); JScrollPane sp2 = new JScrollPane(ta, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); inframe.getContentPane().add(spane) desktop.add(inframe); inframe.setVisible(true); }

    • ベストアンサー
    • Java
  • java起動時にボタンが表示されない

    Javaの初心者です。以下のプログラムを起動するとJTextAreaとJLabel は、表示されるのですが、JButtonが表示されません。起動後にボタンの配置したところを触るとボタンが表示されるようになるのですが、ボタンのアクションリスナーが動作してしまいます。起動時にボタンも表示できるようにするには、どうしたらよいでしょうか? public class test_pro extends JFrame{ private static final long serialVersionUID = 1L; private JLabel label1;     JButton buton1,button2;     public JTextArea lt1; public test_pro() { this.setUndecorated(true);    GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); device.setFullScreenWindow(this); Container contentPane = getContentPane(); contentPane.setLayout(null); label1 = new JLabel("menu"); Font f1=new Font("Serif",1,22); label1.setFont(f1); label1.setForeground(Color.red);     contentPane.add(label1); lt1=new JTextArea(3,3); JScrollPane pane=new JScrollPane(lt1); pane.setBounds(new Rectangle(50,300,550,150)); contentPane.add(pane);     button1 = new JButton("SendRequestTest!"); button2 = new JButton("ReceiveResponseTest!"); label1.setBounds(new Rectangle(50,20,200,20)); button1.setBounds(new Rectangle(50,80,230,20)); button2.setBounds(new Rectangle(50,110,230,20));  contentPane.add(button1); contentPane.add(button2); button1.addActionListener(new MyJsendActionAdapter()); button2.addActionListener(new MyJreceiveActionAdapter());     this.setDefaultCloseOperation(EXIT_ON_CLOSE);     this.setVisible(true);    } /*以下省略*/

  • SwingでgetContentPaneのエラーです、お願いします

     今晩は、java勉強中のものです、宜しくお願いします。  下のようなプログラムを組んでみましたが、「型JFrameから非staticメソッドgetContentPane()にstatic参照 することは出来ません」というエラーコードです。  原因が良く分かりません、どなたか教えて下さい。  いくら考えても原因がよく分かりません、宜しくお願いします。 ================================================================ public class Panel_train extends JFrame{ public static void main(String[] args) { Container cnt = getContentPane(); JPanel jpanel = new JPanel(); JTextArea jtext = new JTextArea("Hello World", 100, 50); jpanel.add(jtext); cnt.add(jpanel, BorderLayout.CENTER); JFrame frame = new JFrame("テスト"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(200, 100); frame.setVisible(true); } }

    • ベストアンサー
    • Java
  • コンポーネントの配置

    すみませんコンポーネントの配置でまた困ってます。 一番上にメニューバーを表示させて、 次にツールバーを追加してJTabbedPaneを設置しているんですが、その間にコンボボックスを左にひとつ 右にひとつ設置したいんですがどうやればよいか わかりません(泣 JTabbedPane tabPane = new JTabbedPane(JTabbedPane.TOP , JTabbedPane.SCROLL_TAB_LAYOUT); JEditorPane html = new JEditorPane(); //このコンボボックスをツールバーの下の JEditorPaneとの間に配置したい JComboBox cb1= new JComboBox(choise); JComboBox cb2= new JComboBox(choise); JPanel statusBar = new JPanel(); JLabel statusLabel = new JLabel(); //メニューバーの生成 JMenuBar mb = new JMenuBar(); //メニューの作成 JMenu mn1 = new JMenu("ファイル(F)"); JMenu mn2 = new JMenu("編集(E)"); JMenu mn3 = new JMenu("表示(V)"); //メニューバーにメニューを追加する mb.add(mn1); mb.add(mn2); mb.add(mn3); //フレームにメニューバーを設定 setJMenuBar(mb); //ツールバーの作成 JToolBar tb = new JToolBar(); //ツールバーを固定する tb.setFloatable(false); //ツールバーの追加 getContentPane().add(tb, BorderLayout.NORTH); getContentPane().add(html,rLayout.CENTER); statusBar.add(statusLabel); getContentPane().addstatusBar,BorderLayout.SOUTH); ---------------- 追加で質問なんですがメニューバーに追加している たとえばファイル(F)や編集(E)のような(F) や(E)はALTキーを押しながらFやEを押すと 選択できるんですがこの機能ってswingにも実装できるんでしょうか??  どなたかお願いします!!

    • ベストアンサー
    • Java
  • staticではないメソッドadd(Comp・・・

    コンパイルエラーが出ました。 かたほうのソース”A”では、add(p)で通るんですが、もう一方のソース”At”は、通りませんなぜでしょうか? 教えて下さい ↓”A”(通るほう) import javax.swing.*; import java.awt.event.*; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.border.LineBorder; import java.awt.*; public class A extends JFrame implements ActionListener { public static void main(String args[]) { A a = new A(); a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); a.setBounds(200,200,400,200); JMenuBar menubar = new JMenuBar(); LineBorder border = new LineBorder(Color.black,2, true); menubar.setBorder(border); JMenu menu1 = new JMenu("ファイル"); JMenu menu2 = new JMenu("エディット"); JMenu menu3 = new JMenu("編集"); JMenu menu4 = new JMenu("ヘルプ"); menubar.add(menu1); menubar.add(menu2); menubar.add(menu3); menubar.add(menu4); JMenuItem menuitem1 = new JMenuItem("新しく作る"); JMenuItem menuitem2 = new JMenuItem("続きから作る"); JMenuItem menuitem3 = new JMenuItem("ヘルプの表示"); menu1.add(menuitem1); menu1.add(menuitem2); menu4.add(menuitem3); a.setJMenuBar(menubar); a.setVisible(true); } A() { super("A"); JLabel l = new JLabel(""); JButton b = new JButton("PUSH"); b.addActionListener(this); JPanel p = new JPanel(); p.setBackground(Color.green); p.add(b); p.add(l); add(p);       ←ここ } public void actionPerformed(ActionEvent e) { System.out.println("A"); } } ___________________________________________________________________________________________________________________________________________________ ↓”At” import javax.swing.*; import java.awt.*; import java.awt.event.*; public class At extends JFrame { public static void main(String args[]) { At at = new At(); at.setBounds(200,200,400,200); at.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); at.setVisible(true); JButton b1 = new JButton("JButton1"); JButton b2 = new JButton("JButton2"); JButton b3 = new JButton("JButton3"); JPanel p = new JPanel(); p.setBackground(Color.red); b1.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { JLabel l = new JLabel("JBUTTON!1"); } } ); p.add(b1); p.add(b2); p.add(b3); add(p);         ←ここ } }

    • ベストアンサー
    • 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
  • メニューバーのプログラム

    javaで、メニューバーの項目を選んだら動作するプログラムを試しに組んでみようとしたのですがうまくいきません。 どう組めばいいか教えてください。 メニューバーの項目を選んだあとに出てくるメニューを選ぶと動作するプログラムは検索してすぐ出てくるのですが…。 下のプログラムはメニューバーのEndを押すと終了する、にならなかったプログラムです。 import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; class Test1 extends JFrame{ public static void main(String args[]){ Test1 frame = new Test1("タイトル"); frame.setVisible(true); } Test1(String title){ setTitle(title); setBounds(100, 100, 300, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JMenuBar menubar = new JMenuBar(); JMenu menu1 = new JMenu("End"); menu1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ System.exit(0); } }); menubar.add(menu1); setJMenuBar(menubar); Container contentPane = getContentPane(); } }

    • ベストアンサー
    • Java
  • メニューからブラウザを起動するには?

    GUI上のメニューバーから、ブラウザを起動してhtmlページを表示したいのですが、どうもどういった命令を使えばいいのかが分かりません。 検索して調べるにも適当な検索ワードがなかなか思いつかず… 具体的には、 JMenuBar menuBar = new JMenuBar(); JMenu menuHelp = new JMenu("ヘルプ"); menuBar.add(menuHelp); menuItem = new JMenuItem("操作マニュアル"); menuHelp.add(menuItem); このソースの"操作マニュアル"を選択すると、ブラウザを起動してhtmlファイルを表示したいのです。 環境はOSがFedora Core 4、ブラウザはMozzilaもしくはFirefoxですが、Windowsでもそのまま動くことが必要です。 〆切の近い卒業研究のことなので、どなたか助言をお願いします。

    • ベストアンサー
    • Java
  • テキストエリアの大きさをドラッグで調節したい

    _____________________________ || | | | etc | | | ============================= | | | JTextArea | | | | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 上の図の=の部分を上下にドラッグすると、 JTextAreaの大きさを調節できるようにした いのですが、どうしたら良いのでしょうか? ソースは次のようにしています。 JPanel mainPanel = new JPanel(new GridLayout(2,1)); JPanel panel_1 = new JPanel(); panel_1.add(...); : etc部の追加 : mainPanel.add(panel_1); JPanel panel_2 = new JPanel(); panel_2.add(textArea); mainPanel.add(panel_2); getContentPane().add(mainPanel);

  • ボタンが表示されません

    //テキストパッドをつくっています。 //このプログラムはボタンが表示されませんなぜ? import java.awt.*; import javax.swing.*; class Test_Text extends JFrame{ public static void main(String args[]){ Sample_text st = new Sample_text(); JFrame jf = new JFrame("Test_Text"); JTextArea jt = new JTextArea(50,30); Container c = jf.getContentPane(); c.add(jt,BorderLayout.PAGE_START); jf.pack(); jf.setVisible(true); jf.setDefaultCloseOperation(EXIT_ON_CLOSE); } public void Sample_text(){ JButton j1,j2; j1 = new JButton("編集"); j2 = new JButton("保存"); setLayout(new FlowLayout()); this.add(j1); this.add(j2); } }

専門家に質問してみよう