2014-06-23 3 views
0

두 클래스가 있는데, 하나는 MyDrawPanel이고 두 번째 코드는 TwoButtons입니다. Eclipse를 사용하여 코드를 실행합니다. 하지만 내 코드에 어떤 문제가 있는지 잘 모르겠습니다. Eclipse에는 응답이 없습니다 @@?내 Java GUI 코드에 문제가 있습니까? Eclipse에서 응답이 없습니까?

일류 :

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

class MyDrawPanel extends JPanel { 

public MyDrawPanel() { 
    this.setForeground(Color.white); 
} 

@Override 
public void paintComponent(Graphics g) { 
    Graphics2D g2d = (Graphics2D)g;  
    super.paintComponent(g2d); 
    g.fillRect(0,0,this.getWidth(),this.getHeight()); 
    GradientPaint gradient = new GradientPaint(70,70,Color.LIGHT_GRAY,200,200,Color.CYAN); 
    g2d.setPaint(gradient); 
    g.fillOval(70, 70, 100, 100); 
} 

public static void main(String[] args) { 
    JFrame jFrame = new JFrame(); 
    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jFrame.setSize(300, 300); 
    jFrame.add(new MyDrawPanel()); 
    jFrame.setVisible(true); 
} 

} 

두 번째 클래스 :

public class TwoButtons { 
JFrame frame; 
JLabel label; 

public static void main(String[] args) { 
    TwoButtons gui = new TwoButtons(); 
    gui.go(); 

} 

private void go() { 
    frame = new JFrame(); 
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); 

    JButton labelButton = new JButton("change Label"); 
    labelButton.addActionListener(new LabelListener()); 

    JButton colorButton = new JButton("change Circle"); 
    colorButton.addActionListener(new ColorListener()); 

    label = new JLabel("I'm a label"); 
    MyDrawPanel draw = new MyDrawPanel(); 

    frame.getContentPane().add(BorderLayout.SOUTH,colorButton); 
    frame.getContentPane().add(BorderLayout.CENTER,draw); 
    frame.getContentPane().add(BorderLayout.WEST,label); 
    frame.getContentPane().add(BorderLayout.EAST,labelButton); 



} 
class LabelListener implements ActionListener{ 
    public void actionPerformed(ActionEvent event){ 
     label.setText("Ouch!"); 
    } 
} 
class ColorListener implements ActionListener{ 
    public void actionPerformed(ActionEvent event){ 
     frame.repaint(); 
    } 
} 

}

사람이 어떻게 코드를 변경하는 방법을 말해 줄래?

+5

정말 우리에게 분명 당신이보고있는 어떤 정보를 제공하지 않습니다 "이클립스는 응답이 없습니다"- 또는 당신이에 노력하고를 달하다. 귀하의 질문을 명확히하십시오. –

+0

1. 왜 2 개의 메인이 있습니까? 2. paintComponent에서 g2d와 g를 모두 사용합니다 ... – Infested

답변

1

은 이동 방법의 하단에 두 줄을 추가 -

frame.setVisible(true); 
frame.setSize(500,500); 
+0

두 가지 주요 방법으로 OP가 실제로 실행중인 클래스를 알 수 없습니다 – MadProgrammer

+0

하지만 한 번에 하나만 실행됩니까? 그리고 그는 어느 것을 실행할지를 안다. 나는 그가 TwoButton 클래스를 돌리고 있다고 가정하고있다. 우리가 그것을 실행할 때.이 두 라인이 없기 때문에 출력이 없다. –

+0

나는 그것이 틀렸다는 것을 말한 적이 없다.), 나는 그저 알기가 불가능했다 (명확한 설명없이);) – MadProgrammer