2016-12-10 1 views
-2

Java에서 간단한 페인트 응용 프로그램을 만들려고했지만 버튼에 대한 작업을 수행 할 수 없습니다. 이제는 옵션이있는 창이 표시되지만 셰이프를 클릭 한 후 동작을 수행하는 코드를 작성해야합니다 -하위.모양이 jframe에 표시되지 않습니다.

코드를 도와주세요 :

package simplepaint; 

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

public class DrawingFrame extends JFrame { 
    JButton loadButton, saveButton, drawButton; 
    JComboBox colorList, shapesList; 
    JTextField parametersTextField; 

    DrawingFrame() { 
     super("Drawing Application"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JToolBar toolbar = new JToolBar(); 
     toolbar.setRollover(true); 

     toolbar.add(loadButton=new JButton("Load")); 
     toolbar.add(saveButton=new JButton("Save")); 

     toolbar.addSeparator(); 

     toolbar.add(drawButton=new JButton("Draw")); 

     toolbar.addSeparator(); 
     toolbar.addSeparator(); 

     toolbar.add(new JLabel("Shape")); 
     shapesList=new JComboBox(new String[] { "Circle", "Rectangle", "Line","Triangle" }); 
     toolbar.add(shapesList); 

     toolbar.addSeparator(); 

     toolbar.add(new JLabel("Parameters")); 
     toolbar.add(parametersTextField=new JTextField()); 

     toolbar.add(new JLabel("Color ")); 
     colorList=new JComboBox(new String[] { "black", "red", "blue", 
       "green", "yellow", "orange", "pink", "magenta", "cyan", 
       "lightGray", "darkGray", "gray", "white" }); 
     toolbar.add(colorList); 

     getContentPane().add(toolbar, BorderLayout.NORTH); 

    } 
    class DrawPane extends JPanel{ 
     public void paintComponent(Graphics g){ 
     g.fillRect(20, 20, 100, 200); 
     } 
    } 

    public static void main(final String args[]) { 
     DrawingFrame frame = new DrawingFrame(); 
     frame.setBounds(100, 100, 600, 500); 
     frame.setVisible(true); 
    } 
} 
+1

제발 도와주세요 - 어떻게? 특정 질문을 한 것이 아니라 설명 할 수없는 코드를 게시하고 광범위한 요구 사항을 제시했습니다. 여기있는 대부분의 사람들은이 질문을 "나를 위해이 프로그램 기능을 구현하십시오."라고 읽습니다. 그리고 그것은 잘 진행되지 않을 것입니다. 대신 기능을 구현하려는 시도를 보여 주어야하고, 시도가 제대로 작동하지 않으면 작동하지 않는 것 또는 이해할 수없는 것에 대해 * 특정 * 질문을하십시오. –

+0

DrawPane은 아무 것도 추가되지 않으므로 아무 것도 그리지 않습니다. JFrame에 추가하면 아무것도 볼 수 없습니다. –

답변

0

당신은 Custom Painting Approaches을 선택하여 시작할 수 있습니다.

사용자 정의 페인팅을 수행하는 두 가지 일반적인 방법을 보여줍니다.

  1. 저장소는 BufferedImage에 직접 ArrayList
  2. 페인트 칠 객체.

이 예제는 지정된 색상으로 사각형을 그리는 방법을 보여줍니다.

시작점과 끝점 만 필요하기 때문에 원과 선을 그리는 코드를 수정하는 것이 상대적으로 간단해야합니다.

삼각형을 그리는 것은 더 복잡 할 것입니다.

+0

내가 추가 할 수있는 도형을 선택하기위한 옵션을 더 추가하고 싶을 때만 직사각형을 그릴 수 있는지 코드를 검사 했습니까? – Nayank

+1

@Nayank : 코드를 이해하고 필요에 맞게 수정하십시오. Camickr, 당신은 도움 뱀파이어의 질문에 대답하고 있습니다. –

+0

@ Nayank, 콤보 상자를 추가 한 다음 페인팅 코드에 추가하고 if 문을 몇 개 추가하십시오. 직사각형 인 경우 직사각형을 그립니다. 서클을 그리는 경우 등 – camickr

0

가장 먼저 할 일은 ActionListener을 작성하여 단추를 클릭 할 때 콜백을 실행하도록하는 것입니다. 당신의 생성자에서, 당신은 같은 것을 할 수 있습니다 : 당신은 그리기 버튼을 클릭 할 때마다

drawButton.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      System.out.println("hello"); 
     } 
    }); 

를하고 표준 출력에 알 수 있습니다, '안녕하세요'인쇄됩니다.

모양을 그리는 작업을 실제로 수행하는 방법에 대한 @ camickr의 대답을 참조하십시오.

관련 문제