Graphics java awt
sabunia portal
import java.applet.*;
import java.awt.*;
class main extends Applet
{
public void paint (Graphics gDC)
{
gDC.drawString("pierwszy aplet",100,50);
}
}
Mam ppytanie dlaczego on nie dziala.Uzywam jcreatora kompiluje mi sie ale gdy chce uruchomic jest taki blad:
Exception in thread "main" java.lang.NoClassesDefFoundError:aplet
Pomozcie!
pozdrawiam
Więc pokaż mi JAKĄKOLWIEK własną inicjatywę. Na forum można pomóc, a nie napisać coś za kogoś.
Narazie mam coś takiego
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class stoper extends Applet implements ActionListener
{
/**
*
*/
private static final long serialVersionUID = 1L;
int h = 0;
int m = 0;
int s = 0;
Button b1 = new Button("dodaj");
Button b2 = new Button("odejmnij");
Button b3 = new Button("start");
public void init (){
Panel panel = new Panel();
panel.setLayout(new GridLayout(4, 3));
panel.add(b1);
panel.add(b2);
panel.add(b3);
setLayout(new BorderLayout());
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
}
public void actionPerformed(ActionEvent arg0) {
}
} tylko, że nie chcą mi się wyświetlać przyciski.
Witam,
Mam trzy klasy:
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
public class Main {
public static void main(String[] args) {
R r = new R();
r.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
r.setVisible(true);
}
}
public class R extends JFrame {
public R() {
P p = new P();
Container c = getContentPane();
c.add(p);
}
}
public class P extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
Rectangle2D bbb = new Rectangle2D.Double(10, 10, 100, 100);
g2.draw(bbb);
}
Powyższy program powinnien namalować jeden prostokąt.
Jak zmodyfikować ten program aby malował on X prostokątów, gdzie X to liczba tych prostokątów.
Tak aby współrzędne X prostokątów były przechowywane w tablicy i wartości tej tablicy by się zmieniały, a program np. co 1 sekundę pobierał by te wartości, zmazywał już namalowane prostokąty i malował nowe z nowymi współrzędnymi.
Jeśli chodzi o zmienianie wartości tablicy, to sobie poradzę. Niestety niewiem jak sprawić by program co jakiś czas malował X prostokątów.
Pozdrawiam
Marcin
Zmienilem na tak:
import java.applet.*;
import java.awt.*;
public class PierwszyApplet extends Applet
{
public void paint (Graphics gDC)
{
gDC.drawString("PierwszyApplet",100,50);
}
}
Dalej jest problem.Kompiluje sie ale przy wywolaniu jest blad:
Exception in thread "main" java.lang.NoSuchMethodError: main
Plik nazwalem tak samo jak klase.Dalem public.
pozdrawiam
Hmmm... A czy moge zrobic tak, zeby panel mial przezroczyste tlo?
Chodzi Ci o metodę paintComponent, bo takiej metody uzywam do malowania. Dokładnie używam
public void paintComponent( Graphics g ) {
a w środku do odmalowania czegoś używam
draw(punkt);
EDIT!!!!!!!!!!!!!!!!
zrobilem sobie taka klase:
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import java.awt.event.*;
public class Ble extends JPanel{
public Ble() {
super();
// TODO Auto-generated constructor stub
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.draw( new Line2D.Double( new Point2D.Double( 5,5 ), new Point2D.Double(40,40 )));
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
i gdy chce ja w innym panelu wymalowac poprzez g.draw(to_cos); gdzie g jest typu Graphics, to dostaje komunikat od kompilatora, iż
The method draw(Shape) in the type Graphics2D is not applicable for the arguments (Ble) GlownyPanel.java
Co z tym począć? Podejrzewam, że należy zaimplementować interfejs shape, ale co w nim za co odpowiada. Czy mógłbyś mi Pelzaku zdradzić tą słodką tajemnicę :) ?
Użytkownik MeHow edytował ten post 28 kwiecień 2006 - 16:40
Chciałbym wyświetlić obrazek .jpg w oknie zakładki w nowym JPanelu w Aplecie
fragment kodu jaki wpisałem:
class z4 extends JPanel { //nowy JPanel
public void paint(Graphics g) {
Image img;
img = getImage(getDocumentBase(), "foto.jpg");
g.drawImage(img, 0, 0, this);}
JCreator wyrzuca mi błąd:
cannot find symbol
symbol : method getDocumentBase()
location: class z4
img = getImage(getDocumentBase(), "foto.jpg")
importuję na początku biblioteki:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
jestem początkującym w javie proszę o pomoc co nie tak robię lub co muszę zrobić aby to uruchomić
Nie będę na razie przytaczał kodu bo jest dość długi, a może uda się nam rozwiązać problem tak bardziej "opisowo". Do rzeczy, mam klasę główną (która dziedziczy po JFrame), a w niej tablicę iluś tam obiektów klasy dziedziczącej po Thread. W konstruktorze klasy głównej uruchamiam te wszystkie wątki, a każdy wątek zmienia w czasie właściwości swojej klasy (dla przykładu klasa dziedzicząca po Thread reprezentuje koło i co sekundę zmienia jego promień i kolor na losowo wybrany). Pytanie co zrobić, żeby po każdej takiej zmianie promienia odrysować okno główne (na którym są narysowane wszystkie koła). Obiekty reprezentujące koło przecież nie wiedzą o klasie głównej więc nie mogą kazać jej się odrysować, natomiast klasa główna wywołuje swój konstruktor na początku działania programu, a potem jedynie reaguje na zmianę rozmiaru okna, przesłonięcie go itp, ale sama z siebie nie wie kiedy obiekty wewnątrz niej się zmieniły więc nie może na to zareagować.
Edit: Po uproszczeniu nie jest taki długi ten kod więc wkleję.
import javax.swing.*;
import java.awt.*;
class Kolo extends Thread {
public int promien = 100;
public void run() {
while(true) {
promien = (int)(Math.random()%200 + 1);
try {
sleep(1000)
} catch (InterruptedException e) { }
}
}
}
class Kolka extends JFrame {
private kolka[] Kolo;
public Kolka(int liczbaKolek) {
super("Kolka");
kolka = new Kolo[liczbaKolek];
for(int i = 0; i < kolka.length; i++) kolka[i] = new Kolo();
setSize(400,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new JPanel() {
public void paintComponent(Graphics g) {
super.paintComponents(g);
// Rysujemy Koolka
for(Koralik k : koraliki)
// x i y sa obliczane na podstawie pewnego algorytmu
g.fillArc(x, y, k.promien, k.promien, 0, 360);
}
});
setVisible(true);
// Startujemy kolka
for(int i = 0; i < kolka.length; i++) kolka[i].start();
}
public static void main (String[] args) {
String s = JOptionPane.showInputDialog("Ile kolek chcesz utworzyc ?");
new Kolka(Integer.parseInt(s));
}
}
Użytkownik nupagadi edytował ten post 28 grudzień 2009, 09:19
1.Stwórz nowy pusty projekt:
2.Kliknij prawym na Source Package i New , dodaj: Swing GIU Forms -> JFrame Form
3.Przeciągnij z Palette (po prawej) komponent Button na okienko, zmień nazwę na rysuj, lub jak wolisz.
4.Zrób to samo z Panel
Powinno to wyglądać mniej więcej tak:
5.Zainicjalizuj na samym początku w programie zmienną to rysowania:
private java.awt.Graphics rysuj;
5.Kliknij na Button szybko dwa razy lub w zakładce Events wybierz akcje: MousePressed,
kliknij go i wejdź tym samym do kodu programu
6.Wpisz kod:
rysuj = (java.awt.Graphics)jPanel1.getGraphics();
Tym samym dalismy znac, że "rysuj" będzie rysował na naszym Panelu
7.Kliknij na swój Panel i zakładce Events wybierz MousePressed,
kliknij go i wejdź tym samym do kodu programu.
8.Wpisz kod:
Color kolor = java.awt.Color.red; //wybór koloru
rysuj.setColor(kolor); //wstawienie koloru
rysuj.fillOval(evt.getX(), evt.getY(), 10, 10);
//rysowanie koła na pozycji x i y myszki i wymiarach 10x10
Wynik końcowy:
Jak dasz rade, to napisz mi szybko ;)
Najlepiej będzie, jeśli zamieszczę całość, a wygląda ona następująco:
--------------------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.applet.*;
public class Aprox extends Applet implements MouseListener
{
Image sourc ;
Image part ;
boolean wyc = false;
public void init()
{
sourc = getImage(getCodeBase(), "plandeville.jpeg");
addMouseListener(this);
}
public void destroy() {
}
public void mouseClicked(MouseEvent e)
{
int x = e.getX();
int y = e.getY();
if (wyc == false)
{
Wytnij(x,y);
wyc = true;
}
else wyc = false;
repaint();
}
public void mousePressed(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void Wytnij(int x, int y)
{
if (x<164) x = 164;
if (x>493) x = 493;
if (y<170) y = 170;
if (y>509) y = 509;
int fragmX, fragmY;
fragmX = 2 * x - 329;
fragmY = 2 * y - 339;
ImageFilter imgF = new CropImageFilter(fragmX, fragmY, 657, 679);
ImageProducer imgP = new FilteredImageSource(sourc .getSource(), imgF);
part = createImage(imgP);
}
public void paint(Graphics g)
{
if (wyc ) g.drawImage(part ,0,0,657,679,this);
else g.drawImage(sourc ,0,0,657,679,this);
}
}
--------------------------------------------------------------------------------------------------
Spisałem to słowo w słowo z jednej książki... A chodzi o to, by zrobić zbliżenie wstawionego obrazka po kliknięciu na niego.
Do tej pory nie pracowałem w eclipsie, ale właśnie go instaluję i zobaczę co da się na nim zrobić. Próbowałem za to w netbeansie i tam mogłem testować ten aplet - nigdy nie działał :(
Jeśli zaś chodzi o kodowanie, to wszystko zapisuję w ANSI - chyba, że chodzi Wam o jakiś inny kod...
Cytat
A sami byli dla siebie większym ciężarem niż ciemność. Mdr 17,20
A sami byli dla siebie większym ciężarem niż ciemność. Mdr 17,20_2