2016-11-03 7 views
0

私はJavaクラスのプロジェクトに取り組んでいます。目的はHello Worldを文字列として表示し、文字列を操作するための4つのボタンを提供する基本的なGUIプログラムを作成することです。このような何か:私は私の窓が正常に関係なく、私がしようとするものにフォーマットしないように見えることはできませんようexampleJLabelの下にJButtonのGridLayoutを追加する方法はありますか?

私もまだプログラムの操作部にもらっていません。

私は4つのボタンを表示することができますが、JLabelにボタンの上にHello Worldを表示させるためにスローしたものはすべて私には完全に失敗しています。

これはとてもシンプルなように見えますが、わかりやすいものがあります。私は1週間ウェブを精査し、理論でこれを行う方法に関する多くの情報を見つけました。私が理解できるものから、これは私の構文の問題でなければなりません。

これまでのところ、私は何をする必要があるのか​​に沿って何かを行う実装は見つかりませんでした。これは私を夢中にさせ、私は期日を過ぎて行くつもりです。私はちょうど答えを持っている必要があります!正しい方向に私を向けることができる誰にもありがとう!

私のコードは現在の形式です。私はこれに近づいているように感じましたが、実行中にコンソールに例外を返します。再度、すべての助けが大いに評価されます!

import java.awt.*; 
import javax.swing.*; 

public class HelloWorld 
{ 
    private JButton uppercaseButton; 
    private JButton lowercaseButton; 
    private JButton phraseButton; 
    private JButton resetButton; 

    private JPanel grid; 

    public JPanel ButtonGrid() 
    { 

     JPanel grid = new JPanel(); 

     grid.setLayout(new GridLayout(2, 2)); 
     uppercaseButton = new JButton("Uppercase"); 
     lowercaseButton = new JButton("Lowercase"); 
     phraseButton = new JButton("New Phrase"); 
     resetButton = new JButton("Reset");  

     grid.add(uppercaseButton); 
     grid.add(lowercaseButton); 
     grid.add(phraseButton); 
     grid.add(resetButton); 

     return grid; 
    } 

    private static void createAndShowGUI() 
    { 
     JFrame frame = new JFrame("THIS IS MY TITLE"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JLabel lbl = new JLabel("HELLO WORLD"); 
     lbl.setPreferredSize(new Dimension(175, 100)); 
     frame.getContentPane().add(lbl, BorderLayout.PAGE_START); 

     ButtonGrid b = new ButtonGrid(); 
     b.setVisible(true); 
     b.setSize(300, 200); 
     frame.getContentPane().add(b, BorderLayout.CENTER); 

     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args){ 

     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGUI(); 
      } 
     }); 

    } 

} 
+0

1行2列のGridLayoutを使用して、JLabelを追加する方法はありますか。その後、別のJPanelを追加し、そのレイアウトマネージャを2x2の別のGridLayoutに設定します。今度はJPanelに4ボタンを追加するだけです – redxef

答えて

2
ButtonGrid b = new ButtonGrid(); 

ButtonGridは、JPanelのインスタンスを返すHelloWorldクラスのメソッドであり、クラスはありません。

ですから、あなたがメソッドを呼び出すことができるようにHelloWorldクラスのインスタンスを作成する必要があります。

HelloWord hw = new HelloWorld() 
JPanel b = hw.ButtonGrid(); 

そして「buttonGridは」法であるので、あなたがする必要があるので、大文字で始めるべきではありませんされますメソッドの名前を変更してから使用してください:

//ButtonGrid b = new ButtonGrid(); 
HelloWord hw = new HelloWorld() 
JPanel b = hw.buttonGrid(); 
0

正しい方向に私を向けるための両方の提案に感謝します!

結局のところ、redxefが最初に提案したのは、基本的な作業でした。 Camickrは私の方法についてすべて間違っていると思っていたので、さらに私を助けました。これらのJPanelの両方を最初のメソッドに組み込み、HelloWorldの名前を変更することで、私は他のいくつかの問題を解決することができました。

私は結果として、プロジェクトが完了して約1時間余分に入れられたことを報告してうれしいです。再び、ありがとう!

+0

提案がうまくいきました。チェックマークをクリックして回答を「受け入れる」ことを忘れないでください。そうすれば、問題が解決されたことが人々に分かります。 – camickr

関連する問題