求助:调试程序
程序要求:在文本框中输入一个数字。点击按钮后,在窗口下半部画图。
图形根据输入的数字有所不同。需要将变量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();
}
}