두 클래스가 있는데, 하나는 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();
}
}
}
사람이 어떻게 코드를 변경하는 방법을 말해 줄래?
정말 우리에게 분명 당신이보고있는 어떤 정보를 제공하지 않습니다 "이클립스는 응답이 없습니다"- 또는 당신이에 노력하고를 달하다. 귀하의 질문을 명확히하십시오. –
1. 왜 2 개의 메인이 있습니까? 2. paintComponent에서 g2d와 g를 모두 사용합니다 ... – Infested