读书人

调试程序

发布时间: 2013-08-27 10:20:47 作者: rapoo

求助:调试程序
程序要求:在文本框中输入一个数字。点击按钮后,在窗口下半部画图。

图形根据输入的数字有所不同。需要将变量num、str传递到绘图方法中。

程序不能通过。程序如下,缩进已乱。良好格式请下载附件。

import java.awt.*;
import javax.swing.*;
import java.util.*; import java.awt.event.*;
public class program extends JFrame {
public static void main(String args[]) {
Demo myDemo=new Demo();
}
}

class ShapesPanel extends JPanel {
ShapesPanel() {
setBackground(Color.white);
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
setSize(350,200);
g.setColor(Color.red);
g.fillRect(1, 1, num*10, num*10);
g.drawString(str,100,100);
}
}

class Demo extends JFrame implements ActionListener {
JTextField input= new JTextField(4);

public Demo() {
setSize(800,600);
setLayout(new FlowLayout());
JButton start=new JButton("开始");
Container con=getContentPane();
con.add(new JLabel("请输入数字(1—10)"));
con.add(input);
con.add(start);
start.addActionListener(this);
con.add(new ShapesPanel());
setVisible(true);
}

public void actionPerformed(ActionEvent e) {
int num=Integer.parseInt(input.getText());
String str=input.getText();

}

}




[解决办法]
首先类要大写


import java.awt.Canvas;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class ProgramA {

private JFrame frame;

private DrawPane drawPane;
private JTextField tf1;

public void createAndShowUI(){



frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane();

drawPane = new DrawPane();

JPanel p1 = new JPanel();
BoxLayout bLayout = new BoxLayout(p1, BoxLayout.Y_AXIS);
p1.setLayout(bLayout);

tf1 = new JTextField();
JButton b1 = new JButton("开始");
b1.addActionListener(new DrawListener());

p1.add(tf1);
p1.add(b1);
p1.add(drawPane);
contentPane.add(p1);



//frame.setPreferredSize(new Dimension(300, 300));
frame.setVisible(true);
frame.pack();
frame.setLocationRelativeTo(null);

}

public void drawStrNum(){
int number = 0;
String numberString = tf1.getText();
try{
number = Integer.parseInt(numberString);
}catch(Exception e){

}
drawPane.setNumber(number);
drawPane.repaint();
}

class DrawListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

drawStrNum();
}
}

class DrawPane extends Canvas{

private int number = 0;
private String string;

public int getNumber() {
return number;
}

public void setNumber(int number) {
this.number = number;
}

public String getString() {
return string;
}

public void setString(String string) {
this.string = string;
}

public DrawPane(){
this.setPreferredSize(new Dimension(300, 200));
}

public DrawPane(int number,String string){
this.number = number;
this.string = string;
}

@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
g.setColor(Color.red);
if(this.number!=0){
g.fillRect(0, 0, this.number*50, this.number*50);
}else{
g.fillRect(0, 0, 50, 50);
}
g.drawString("hello", this.getX()+50, this.getY()+50);
}

}

public static void main(String[] args) {

ProgramA pro = new ProgramA();
pro.createAndShowUI();



}

}

读书人网 >Eclipse开发

热点推荐