Geen fouten, maar werk niet naar wens!

Status
Niet open voor verdere reacties.

GWigWam

Gebruiker
Lid geworden
17 mei 2011
Berichten
21
Zoals jullie vast al vermoedde, ik heb een probleem met een java programmatie. Mijn uiteindelijke doel is een programma maken dat een cirkel tekent met de eigenschappen die de gebruiker invoert. Ik kan hem starten zonder fouten en alles wat ik tot zo ver af heb werkt naar wens, De cirkels worden nog niet echt toegevoegd aan het scherm maar al wel aan een array.
Mijn probleem is dat de knop pas zichtbaar word als je er overheen gaat. En de JTextField wordt pas zichtbaar als je er op klikt. Hieronder staat de broncode, kopier het maar eens naar een IDE en test het! Als je weet wat het probleem is vertel het me dan aub even.


Main
Code:
package circles;

import javax.swing.JFrame;

public class main {
	public static void main(String args[]){
		System.out.println("Started the program");
		StartFrame start = new StartFrame();
		start.startframe();
	}
}
Circle
Code:
package circles;

import java.awt.Graphics;

import javax.swing.*;

public class Circle{
	public Circle(int x, int y,int diam){
		
		
		
	}
}
MyWindow
Code:
package circles;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.*;

public class MyWindow extends JPanel implements ActionListener{
	
	DrawCircle drawAcircle = new DrawCircle();
	int intx;
	int inty;
	int intdiam;
	
	JButton btnNewCircle = new JButton("New Circle");
	JTextField TFx = new JTextField("X-coords");
	JTextField TFy = new JTextField("Y-coords");
	JTextField TFdiam = new JTextField("Diameter");
	
	public MyWindow(){
	
	btnNewCircle.addActionListener(this);
	add(btnNewCircle);
	add(TFx);
	add(TFy);
	add(TFdiam);

	}

	public void actionPerformed(ActionEvent e) {
		System.out.println("Button1 has been clicked");
		
		try{
			intx = Integer.parseInt(TFx.getText());
			inty = Integer.parseInt(TFy.getText());
			intdiam = Integer.parseInt(TFdiam.getText());
		}catch(NumberFormatException e1){
			System.out.println("Input invallid!");
			JOptionPane.showMessageDialog(null, "Input is invalid!");
		}
	
		drawAcircle.DrawCircle(intx,inty,intdiam);
	}
}
DrawCircle
Code:
package circles;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class DrawCircle extends JPanel implements ActionListener{
	
	JPanel p = new JPanel(new BorderLayout());
	
	Circle[] circles = new Circle[64];
	int index = 0;
	
	public void paint(Graphics g) {
	   //zo hoort het: g.fillOval(25, 25, 120, 120);
	  }
	
	public void DrawCircle(int intx, int inty, int intdiam){
		if(intx == 0 || inty == 0 || intdiam == 0){
			System.out.println("One of the circle values is zere, action aborted!");
		}else{
			circles[index] = new Circle(intx, inty, intdiam);
			//repaint();
			index++;
			System.out.println("A new circle has been added! " + "At coords: ("+ intx +"," + inty +") With a diam of: "+intdiam);
			}
		}
	
		//=========================================================================================
		
		int Rintx;
		int Rinty;
		int Rintdiam;
		
		JButton btnNewCircle = new JButton("New Circle");
		JTextField TFx = new JTextField("X-coords");
		JTextField TFy = new JTextField("Y-coords");
		JTextField TFdiam = new JTextField("Diameter");
		{
		
		btnNewCircle.addActionListener(this);
		add(btnNewCircle);
		add(TFx);
		add(TFy);
		add(TFdiam);

		}

		public void actionPerformed(ActionEvent e) {
			System.out.println("Button1 has been clicked");
			
			try{
				Rintx = Integer.parseInt(TFx.getText());
				Rinty = Integer.parseInt(TFy.getText());
				Rintdiam = Integer.parseInt(TFdiam.getText());
			}catch(NumberFormatException e1){
				System.out.println("Input invallid!");
				JOptionPane.showMessageDialog(null, "Input is invalid!");
			}
		
			DrawCircle(Rintx,Rinty,Rintdiam);
		
		}

	}
StartFrame
Code:
package circles;

import java.awt.Color;

import javax.swing.JFrame;

public class StartFrame extends JFrame{
	public void startframe(){
	
    JFrame frame = new JFrame();
    
    //frame.getContentPane().add(new MyWindow());
    frame.getContentPane().add(new DrawCircle());
        
    frame.setTitle("Circles");
    frame.setBackground(Color.ORANGE);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 500);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
	System.out.println("Frame started!");
	}
}

Het zal misschien moeilijk zijn om een beetje de weg te vinden in mijn code, ik ben nog maar een beginner en doe dingen dus niet zo efficiëntie!
Alvast bedankt,
GWigWam
 
Naam main van de class MOET veranderen naar Main of welke andere naam ook en begint volgens conventies met hoofdletter

volgens zie ik bij DrawCircle
Code:
...
		JTextField TFy = new JTextField("Y-coords");
		JTextField TFdiam = new JTextField("Diameter");
		{//TODO wat is dit
		
		btnNewCircle.addActionListener(this);
		add(btnNewCircle);
		add(TFx);
		add(TFy);
		add(TFdiam);
		}
...
maar je moet mogelijks al een frame zien verschijnen

de knop doet niets dan enkel zeggen dat er geen juiste waarde is ingevuld

verder moet je zeker de paint implementeren in je circle om nadien je circle te kunnen(juist) repainten. zie javadoc
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan