Jump to content

Recommended Posts

Gjorde den här för längesen. Hitta en kod i en bok (PolyDemo.java) och så hitta ja på en massa extra. Om det funkar finns knapparna av och på överst. Och så har ja testat att göra exe-filer med exeForj men får det inte att funka. Nån här som vet hur man gör exe-filer?  :)

Och så har ja problem med ljudet. Kan bara denna.. Toolkit.getDefaultToolkit().beep(); ..I metoden pip.

//PolyDemo.java

//Jannes

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.border.*;

import java.applet.*;

class Poly extends JLabel implements ActionListener{

private int n,r;

private int x0;

private int y0;

private double vinkel;

private int[] x,y;

private double dv = 4*2*Math.PI/360;

private double vrid = 0;

private double vänster,höger;

private Timer tim = new Timer(20,this);

private int xSteg = 4;

private int ySteg = 3;

private int dv2 = (int)dv/2;

public Poly(int antal,int radie,PolyDemo p){

x0 = p.getSize().width / 2;

y0 = p.getSize().height / 2;//Placera start-pos

n = antal;

r = radie;

x = new int[n];

y = new int[n];

vinkel = 2 * Math.PI/n;//Ett varv/antal

}

public void start(){

tim.start();

}

public void stop(){

tim.stop();

}

public void actionPerformed(ActionEvent e){

vrid = vrid + dv;

if(vrid > 2 * Math.PI){

vrid -= 2 * Math.PI;

}

ySteg = ySteg + 1;

if(x0-r+xSteg < 0){//vänster kant

if(ySteg > 0){//på väg neråt

if(dv > 0){//roterar åt höger

ySteg = ySteg*2;

}

if(dv < 0){//roterar åt vänster

ySteg = ySteg/2;

dv = - dv;

}

}

if(ySteg < 0){//på väg uppåt

if(dv > 0){//roterar åt höger

ySteg = ySteg/2;

dv = - dv;

}

if(dv < 0){//roterar åt vänster

ySteg = ySteg*2;

}

}

if(xSteg < 0){//Bromsa i vänster kant

xSteg = -4;

}

pip();

xSteg = -xSteg;

}

if(x0+r+xSteg > getSize().width){//höger kant

if(ySteg > 0){//på väg neråt

if(dv > 0){//roterar åt höger

ySteg = ySteg/2;

dv = - dv;

}

if(dv < 0){

ySteg = ySteg*2;

}

}

if(ySteg < 0){//på väg uppåt

if(dv > 0){

ySteg = ySteg*2;

}

if(dv < 0){

ySteg = ySteg/2;

dv = - dv;

}

}

pip();

xSteg = -xSteg;

}

x0 += xSteg;//placera x-led

if(y0 - r + ySteg < 0){//övre kant

if(xSteg > 0){//på väg åt höger

if(dv > 0){//roterar åt höger

xSteg = xSteg / 2;

dv = - dv;

}

if(dv < 0){//roterar åt vänster

xSteg = xSteg * 2;

}

}

if(xSteg < 0){//på väg åt vänster

if(dv > 0){//roterar åt höger

xSteg = xSteg * 2;

}

if(dv < 0){//roterar åt vänster

xSteg = xSteg / 2;

dv = - dv;

}

}

if(ySteg < 0){//Bromsa i övre kant

ySteg = 0;

}

pip();

ySteg = - ySteg;//vänd

}

if(y0 + r + ySteg > getSize().height){//nedre kant

if(xSteg > 0){//på väg åt höger

if(dv > 0){//roterar åt höger

xSteg = xSteg * 2;

}

if(dv < 0){//roterar åt vänster

xSteg = xSteg /2;

dv = - dv;

}

}

if(xSteg < 0){//på väg åt vänster

if(dv > 0){//roterar åt höger

xSteg = xSteg / 2;

dv = - dv;

}

if(dv < 0){//roterar år vänster

xSteg = xSteg * 2;

}

}

if(xSteg == 0){//står still

if(-dv > 0){

xSteg = -2;

}

else{//(-dv > 0){

xSteg = 2;

}

ySteg = 2;

}

pip();

ySteg = - ySteg;

}

y0 += ySteg;//placera y-led

repaint();

}

public void paintComponent(Graphics g){

Graphics2D g2 = (Graphics2D)g;

super.paintComponent(g2);

for(int i = 0;i < n;i++){

double v = i * vinkel - vrid;

x = x0 + (int)Math.round(r * Math.cos(v));

y = y0 - (int)Math.round(r * Math.sin(v));//Rotera

}

GradientPaint gp = new GradientPaint(0F,5F,Color.green,10F,10F,Color.orange,true);

g2.setPaint(gp);

g2.fillPolygon(x,y,n);

}

public void pip(){

Toolkit.getDefaultToolkit().beep();

}

}

public class PolyDemo extends JFrame implements ActionListener{

private JButton på = new JButton("På");

private JButton av = new JButton("Av");

private Poly y;

public PolyDemo(){

JPanel a = new JPanel();

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

setSize(screenSize.width,screenSize.height);

y = new Poly(5,50,this);

getContentPane().add(y,BorderLayout.CENTER);

getContentPane().add(a,BorderLayout.NORTH);

y.setOpaque(true);

y.setForeground(Color.red);

y.setBackground(Color.blue);

a.setBackground(Color.green);

a.add(på);

a.add(av);

på.addActionListener(this);

av.addActionListener(this);

setTitle("Fiskalens Fönster");

setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE);

}

public void actionPerformed(ActionEvent e){

if(e.getSource() == på){

y.start();

}

else{

y.stop();

}

}

public static void main(String[] argv){

PolyDemo pd = new PolyDemo();

}

}

Link to comment
Share on other sites

Här e en till. 100% gjord av mig själv.  :) Döpte den till TalSwing.java för att ja hade gjort programmet helt komplett i awt. Så detta är inte riktigt färdigt ännu, men det funkar. En alfa-beta.  ;D

Kanske en utmaning för arnada.  ;) Jag vill se era javakoder också......  :)

//Filen TalSwing.java

//Janne

import java.awt.*;

import java.awt.geom.*;

import java.awt.event.*;

import javax.swing.*;

public class TalSwing extends JApplet{

TalSwingPanel bottenPanel;

JLabel[] label = new JLabel[30];

JLabel label1;

int detGissadeTalet;

public TalSwing(){

label1 = new JLabel("",JLabel.CENTER);

label1.setOpaque(false);

label1.setForeground(Color.green);

JPanel panel1 = new JPanel();

panel1.setOpaque(false);

panel1.add(label1);

TalSwingControll controll = new TalSwingControll(this);

controll.startPos();

JPanel labelPanel = new JPanel();

labelPanel.setOpaque(false);

labelPanel.setLayout(new GridLayout(5,6,3,3));

for(int i = 0;i < label.length;i++){

label = new JLabel("?",JLabel.CENTER);

label.setOpaque(false);

label.setForeground(Color.yellow);

labelPanel.add(label);

}

bottenPanel = new TalSwingPanel();//BottenPanelen

bottenPanel.setLayout(new BorderLayout());

bottenPanel.add("North",panel1);

bottenPanel.add("Center",labelPanel);

bottenPanel.add("South",controll);

setContentPane(bottenPanel);

}

public static void main(String[] args){

JFrame frame = new JFrame("TalSwing");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(new TalSwing());

frame.setSize(200,200);

frame.show();

}

public void bytText(String text){label1.setText(text);}

public void valAvNummer(boolean serDuTalet,int index){

int[] nr = {1,2,4,8,16,32,64};

if(nr[index] != 6){

talFoljd(nr[index]);

}

if(serDuTalet){

detGissadeTalet = detGissadeTalet + nr[index] / 2;

}

if(index == 6){

for(int i = 0;i < label.length;i++){

label.setText("");

}

if(detGissadeTalet < 1 || detGissadeTalet > 60){

bottenPanel.setText("Sluta vela");

}

else{

bottenPanel.setText(Integer.toString(detGissadeTalet));

}

detGissadeTalet = 0;

}

}

public void talFoljd(int antaliVarjeGrupp){

int startaMed = antaliVarjeGrupp;

int resultat = 0;

int index = 0;

for(int i = 0;i < label.length;i = i + antaliVarjeGrupp){

resultat = startaMed;

index = i;

while(index < i + antaliVarjeGrupp && index < label.length){

label[index].setText(Integer.toString(resultat));

index++;

resultat++;

}

startaMed = startaMed + antaliVarjeGrupp * 2;

}

}

}

class TalSwingPanel extends JPanel{

Color color1;

Color color2;

String text = "";

Font serif = new Font("Serif",Font.BOLD|Font.ITALIC,50);

TalSwingPanel(){

color1 = new Color(150,0,100);//Default colors

color2 = new Color(200,200,255);

}

TalSwingPanel(Color color1,Color color2){//Egen color

this.color1 = color1;

this.color2 = color2;

}

public void paintComponent(Graphics componenten){

//Panelens bakgrundsFärg

Graphics2D comp2D = (Graphics2D)componenten;

GradientPaint gp = new GradientPaint(0F,0F,color1,100F,100F,color2,true);

Rectangle2D.Float background = new Rectangle2D.Float(0F,0F,(float)getSize().width,(float)getSize().height);

comp2D.setPaint(gp);

comp2D.fill(background);

FontMetrics fm = getFontMetrics(serif);

comp2D.setFont(serif);

int x = (getSize().width - fm.stringWidth(text))/2;

int y = getSize().height/2;

comp2D.setColor(Color.red);

comp2D.drawString(text,x,y);

}

public void setText(String text){

this.text = text;

repaint();

}

}

class TalSwingControll extends TalSwingPanel implements ActionListener{

TalSwing frame;

TalSwingButton jaButton;

TalSwingButton nejButton;

int count = 0;

TalSwingControll(TalSwing parent){

frame = parent;

super.color1 = Color.yellow;

super.color2 = Color.blue;

jaButton  = new TalSwingButton("",Color.red);

jaButton.addActionListener(this);

nejButton = new TalSwingButton("Nej",Color.red);

nejButton.addActionListener(this);

setLayout(new FlowLayout());

add(jaButton);

add(nejButton);

}

public void actionPerformed(ActionEvent e){

if(e.getSource() == jaButton){counter(true);}

else if(e.getSource() == nejButton){counter(false);}

}

public void counter(boolean ok){

if(count > 5){

count = 0;

}

else{

count++;

}

frame.valAvNummer(ok,count);

bytKnapp();

}

public void bytKnapp(){

if(count == 6){

frame.bytText("Tänk på ett tal mellan 1 och 60");

jaButton.setText("Ok");

remove(nejButton);

}

else if(count == 0){

frame.bytText("Ser du ditt tal?");

jaButton.setText("Ja");

add(nejButton);

frame.bottenPanel.setText("");

}

repaint();

}

public void startPos(){

count = 6;

bytKnapp();

}

class TalSwingButton extends JButton{

Color nyCol;

Color gammalCol = Color.black;

TalSwingButton(String text,Color nyCol){

super(text);

this.nyCol = nyCol;

setOpaque(false);

setBorderPainted(false);

addMouseListener(musen);

}

MouseAdapter musen = new MouseAdapter(){

public void mouseEntered(MouseEvent ev){

setForeground(nyCol);

}

public void mouseExited(MouseEvent ev){

setForeground(gammalCol);

}

};

}

}

Link to comment
Share on other sites

Och så kan man visa den i IE7 också, om man tillåter blockerad aktiveX. Fast ja får det inte att funka i foxen.

Funkar alltså som både fristående program och applet. I Textpad [ctrl] [2] och [ctrl] [3]

Filen TalSwing.html sparas i samma mapp som TalSwing.java

<html>

<head>

<title>TalSwing</title>

</head>

<body>

<p>Gissa<br>

<object height="200"width="240"classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"

codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_0-win.cab">

<param name="Code"value="TalSwing.class">

Javan måste va aktiverad

</object>

</body>

</html>

Kanske är fel i denna raden (Gammal html fil som jag hittat och ändrat)

codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_0-win.cab">

Ser ut så här.  :)

Link to comment
Share on other sites

Nu funkar den i Fox.  ;D

Snodde en kod och ändrade lite. (Får börja träna på html)

<html>

  <head>

    <title>Gissa</title>

  </head>

  <body>

  <p>Gissa<br>

    <applet code=TalSwing.class width=300 height=300></applet>

    <p>Om det inte funkar</p>

    <p><a href="http://java.sun.com/getjava/">Hämta java</a></p>

  </body>

</html>

Bidde så här.  ;D

Link to comment
Share on other sites

  • 6 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...