Wątek przeniesiony 2015-01-25 11:11 z Java przez bogdans.

Wyświetlenie obwodów figur w konsoli, po kliknięciu buttona w interfejsie graficznym

0

Witam,
mam napisany program, który oblicza obwód koła i prostokąta. Zrobiłem klasy "koło", "prostokąt", "figura", "figuraTest" i wszystko działa. Teraz chcę, żeby po kliknięciu buttona w interfejsie graficznym wyświetliło mi ładnie te obwody w consoli.

Nie wiem czy dobrze robię, ale wpisałem kod na okienko które wyświetla date(ponieważ było w tutorialu z którego się ucze) do klasy "figuraTest" i myślałem że metodą prób i błędów uda mi się to zamienić, na razie wyświetla mi tak jak na początku obwody w consoli i dodatkowo interfejs graficzny z buttonem gdzie po kliknięciu wyświetla mi jeszcze datę w consoli.

Proszę bardziej doświadczonych o pomoc jak to zrobić, poniżej mój kod z klasy "figuraTest".

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JFrame;


public class FiguraTest extends JFrame implements ActionListener
{
	public FiguraTest()
	{
		setSize(300,200);
		setTitle("Moje pierwsze okienko");
		setLayout(null);
		JButton button = new JButton("Podaj datę");
		button.setBounds(100, 50, 100, 20);
		add(button);
		button.addActionListener(this);
		
		JButton bWyjście = new JButton("Wyjście");
		bWyjście.setBounds(150, 50, 100, 20);
		add(bWyjście);
		bWyjście.addActionListener(this);	
	}
	
	public static void main(String[] args) 
	{
		
		Figura[] figury = new Figura[4];
		
		figury[0] = new Kolo();
		figury[1] = new Kolo(50);
		figury[2] = new Prostokat();
		figury[3] = new Prostokat(3,7);
		
		for (int i = 0; i<figury.length ; i++)
		{
			System.out.println(figury[i].obliczObwod());
		}
		MojeOkienko okienko = new MojeOkienko();
		okienko.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		okienko.setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) 
	{
		System.out.println(new Date());
	}

}
0

Pomysł, żeby program z interfejsem graficznym wyświetlał wyniki na konsoli jest dość osobliwy. Ja nie przyłożę ręki do tworzenia takiego programu.

0

Potrzebuje jakiegokolwiek interfejsu graficznego do tego programu, a ten pomysł użyłem bo wydawał mi sie łatwy. Może jakiś inny radzisz zastosować interfejs graficzny?

0

Zapomnij, że istnieje polecenie

setLayout(null);

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.FlowLayout;
import java.util.Date;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
 
 
public class FiguraTest extends JFrame implements ActionListener
{
    private JButton data;
    private JButton obwody;
    private JTextArea wyniki = new JTextArea(6,40);
    public FiguraTest()
    {
        setSize(300,200);
        setTitle("Moje pierwsze okienko");
        setLayout(new FlowLayout());
        
        data = new JButton("Podaj datę");
        add(data);
        data.addActionListener(this);
        
        obwody = new JButton("Oblicz obwody");
        add(obwody);
        obwody.addActionListener(this);
        
        wyniki.setEditable(false);
        add(wyniki);
        
        pack();
        setLocationRelativeTo(null);
       
    }
 
    public static void main(String[] args) 
    {
        FiguraTest okienko = new FiguraTest();
        okienko.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        okienko.setVisible(true);         
    }
 
    @Override
    public void actionPerformed(ActionEvent e) 
    {
        JButton src = (JButton)(e.getSource());
        if(src == data)
        {
            wyniki.setText(""+new Date());
        }
        else if(src == obwody)
        {
            wyniki.setText("");
            wyniki.append("Obwód koła = \n");
            wyniki.append("Obwód prostokąta = \n");
        }
    }
 
}
0

Super jest fajny interfejs graficzny z przyciskiem "Podaj datę" i po kliknięciu wyświetla date obok w oknie :) Jest też przycisk "Oblicz obwody = " i po jego kliknięciu wyświetla "Obwód koła = " i "Obwód prostokąta =" bez wyników.

To jest dla mnie najcięższa rzecz, jak to zrobić żeby wyświetlało wyniki z programu. Widze że usunełeś kod.

public static void main(String[] args) 
    {
 
        Figura[] figury = new Figura[4];
 
        figury[0] = new Kolo();
        figury[1] = new Kolo(50);
        figury[2] = new Prostokat();
        figury[3] = new Prostokat(3,7);
 
        for (int i = 0; i<figury.length ; i++)
        {
            System.out.println(figury[i].obliczObwod());

Jak zrobić żeby:

System.out.println(figury[i].obliczObwod());

wyświetlało w oknie interfejsu graficznego po naciśnieciu "Oblicz obwod"?

dodanie znacznika <code class="java"> - @furious programming

0

Musiałem usunąć, żeby skompilować.

        else if(src == obwody)
        {
            wyniki.setText("");
            for(int i=0;i<figury.length;i++)
            {
                 wyniki.append(""+figury[i].obliczObwod()); 
            }
        }

Zmienna figury musi być polem w klasie, a nie zmienną lokalną metody main.

public static void main(String[] args)
    {
 
        figury = new Figura[4];

P.S. Po następnym poście, w którym nie wstawisz kodu w odpowiednie znaczniki, wątek wyląduje w koszu.

0

ok to rozumiem :

        else if(src == obwody)
        {
            wyniki.setText("");
            for(int i=0;i<figury.length;i++)
            {
                 wyniki.append(""+figury[i].obliczObwod()); 
            }
        }

Ale nie rozumiem tego, ma być w nowej klasie?

Zmienna figury musi być polem klasie, a nie zmienną lokalną metody main.

public static void main(String[] args)
    {
 
        figury = new Figura[4];
0
public class FiguraTest extends JFrame implements ActionListener
{
    private JButton data;
    private JButton obwody;
    private JTextArea wyniki = new JTextArea(6,40);
    private Figura[] figury = null; //tu masz zdefiniować zmienną //figury//
    public FiguraTest()
...

1 użytkowników online, w tym zalogowanych: 0, gości: 1