2016-04-28 4 views
1

私は2つのクラスで私のコードを持っています。私がコードを開始すると、私はImageを取得します。画像には、最後の2つのメソッドgetHeightとgetWidthがあるまで、長い間白いバーが表示されています。私はコードを持っています。それは私がそれに余分な方法を入れるまでうまく動作します

私の質問:これらの2つの方法がなくてもすべて正常に動作するのはなぜですか? JUnitで後でテストするには、これらの2つのAPIメソッドを用意する必要があると言われました。

package mydraw; 

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


public class DrawImageMini { 

public static void main(String[] args) throws ColorException {new DrawImageMini();} 

/** Application constructor: create an instance of our GUI class */ 
public DrawImageMini() throws ColorException { window = new DrawMiniGUI(this); } 

protected JFrame window; 
} 

class DrawMiniGUI extends JFrame { 
DrawImageMini app; 
Container  cp; 
NavigationPanel navigationPanel; 
JPanel   drawPanel; 

/** 
* The GUI constructor does all the work of creating the GUI and setting 
* up event listeners. Note the use of local and anonymous classes. 
*/ 
public DrawMiniGUI(DrawImageMini application) throws ColorException { 
    super("Draw");  // Create the window 
    app = application; // Remember the application reference 

    // selector for drawing modes 
    JComboBox shape_chooser = new JComboBox(); 
    shape_chooser.addItem("Scribble"); 
    shape_chooser.addItem("Rectangle"); 
    shape_chooser.addItem("Oval"); 

    // selector for drawing colors 
    JComboBox color_chooser = new JComboBox(); 
    color_chooser.addItem("Black"); 
    color_chooser.addItem("Blue"); 
    color_chooser.addItem("Red"); 
    color_chooser.addItem("Green"); 

    // Create two buttons 
    JButton clear = new JButton("Clear"); 
    JButton quit = new JButton("Quit"); 

    // Set a LayoutManager, and add the choosers and buttons to the window. 
    cp = this.getContentPane(); 
    cp.setLayout(new BorderLayout()); 

    // Setzt einen Panel, die Buttons in einer Leiste hat. 
    navigationPanel = new NavigationPanel(new FlowLayout()); 
    navigationPanel.add(new JLabel("Shape:")); 
    navigationPanel.add(shape_chooser); 
    navigationPanel.add(new JLabel("Color:")); 
    navigationPanel.add(color_chooser); 
    navigationPanel.add(quit); 
    navigationPanel.add(clear); 
    navigationPanel.setBackground(Color.magenta); 

    // Setzt den Panel, auf dem gemalt wird 
    drawPanel = new JPanel(); 

    cp.add(navigationPanel, BorderLayout.NORTH, 0); 
    cp.add(drawPanel, BorderLayout.CENTER, 1); 

    // Handle the window close request similarly 
    this.addWindowListener(new WindowAdapter() { 
     public void windowClosing(WindowEvent e) { 
      app.window.dispose(); 
      System.exit(0); 
     } 
    }); 

    // Finally, set the size of the window, and pop it up 
    drawPanel.setPreferredSize(new Dimension(600, 600)); 
    this.pack(); 
    drawPanel.setBackground(Color.red); 
    this.setVisible(true); 
} 
public int getHeight(){ 
    return drawPanel.getHeight(); 
} 

public int getWidth(){ 
    return drawPanel.getWidth(); 
} 
} 
+0

エラーは何ですか?それがうまくいかないことをどのように知っていますか? ControlAltDelの答えがおそらくあなたの問題の解決策であっても、その情報を含めるために質問を更新してください。 – dchayka

答えて

7

getWidthgetHeightがすでにComponentで定義されている)、JFrameののスーパークラス;

SRY、私の悪い英語のために。これらのメソッドはオーバーライドしないでください。むしろ、メソッドの名前を別のものにする必要があります

+0

それ以上の場合: 'JFrame'を拡張しないでください:D。しかし、あなたの答えはまだ正しいです:)。 – Tom