Zum Inhalt springen

Java Temperaturmess Programm Problem :)


itselo

Empfohlene Beiträge

tagchen,

hatte diesen Monatg ein Vorstellungsgespräch bei der Firma Bosch für ein 1 jähriges Pflichtpraktikum und die haben mir um mein Wissensstand in java zu prüfen eine Hausaufgabe gegeben die ich in 2 Wochen erledigen muss, als Aufgabenstellung ist ein Programm zu erstellen das mit einem Slider rechts die Thermometer flüssigkeit links nach oben erhöht wird. Das Thermometer ist links mit labels versehen die die Zahlen 35, 36,5 , 37,5 und 42 haben, erreicht die Flüssigkeit den bereich zwischen 36,5 und 37,5 nimmt die Flüssigkeit die farbe Grün an, steigt sie jedoch über den wert 37,5 nimmt sie die farbe rot an, die Grundfarbe ist Blau und die Flüssigkeit fängt von 0 an, das Programm soll später in SWT erstellt werden und in einer Emulator Konsole von Android SDk ausgegeben werden.

Hab bisher das Android SDk Kit für Java Eclipse installiert und geupdatet, alles nötige hab ich drauf, aber bisher hatte ich nie mit SWT gearbeitet da hab ich sonst keine nützliche Info ausm Internet finden können wie ich am besten anfangen kann. Hab es deshalb mit Swing probiert und kam ziemlich gut voran nur hab das Problem das ich den JSlider egal ob nach rechts oder links geschoben den gleichen effekt erziele, die flüssigkeit sollte aber wenn ich den Slider nach links verschiebe runtersinken und nicht weiter hoch, habs alles mögliche versucht aber nicht hinbekommen, und ich schaffe es nicht das richtige rechteck zu färben mit fillrect färbt sich das Rechteck nur dann wenn die flüssigkeit den Thermometer überschreitet, echt komisch, könnt ihr mir da vllt behilflich sein bitte. Dankeschön im vorraus.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielleicht stellst du mal den relevanten Code zur Verfügung denn so ist das nur Raten was du denn programmiert hast.

Was ich auch nicht ganz verstehe ist was du mit SWT und der Android SDK machen willst. Denn SWT läuft nicht auf dem Android! Mit SWT kannst du wie mit AWT nativ aussehende grafische Oberflächen erstellen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier ist der code:


package std;


import java.awt.BorderLayout;

import java.awt.Canvas;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.GridLayout;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.util.ArrayList;


import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JSlider;

import javax.swing.event.ChangeEvent;

import javax.swing.event.ChangeListener;


public class Fenster extends JFrame{

	public Thermometer th;

	public JLabel lbl1;

	public JLabel lbl2;

	public JLabel lbl3;

	public JLabel lbl4;

	/*int xpos = 50;

	int ypos = 80;

	int breit = 100;*/

	int hoch = 200;

	int min = -200;

	 int max = 200;

	 public String sliderposmin;

	 public String sliderposmax;

	JSlider slider = new JSlider();

	ArrayList<Rechteck> formen = new ArrayList<Rechteck>();








	public Fenster(){

		setSize(600, 400);

		setLayout(null);


		addWindowListener(new WindowAdapter() {


			@Override

			public void windowClosed(WindowEvent e) {

				System.exit(0);

			}



		});




	    lbl1 = new JLabel("42");

	    lbl1.setBounds(30, 80, 15, 15);

	    add(lbl1);


	    lbl2 = new JLabel("37,5");

	    lbl2.setBounds(25, 170, 25, 25);

	    add(lbl2);


	    lbl3 = new JLabel("36,5");

	    lbl3.setBounds(25, 210, 25, 25);

	    add(lbl3);


	    lbl4 = new JLabel("35");

	    lbl4.setBounds(30, 265, 15, 15);

	    add(lbl4);


		th = new Thermometer();

		add(th);


		Rechteck einRechteck = new Rechteck(50, 80, 100, 200);

		formen.add(einRechteck);


		Rechteck flussig = new Rechteck(50, 80, 100, hoch);

		formen.add(flussig);




		 slider = new JSlider(min, max);

		 slider.setBounds(270, 100, 250, 200);

		 add(slider);

		 slider.setMinimum(0);

		 slider.setMaximum(40);

		 slider.setValue(0);

		 slider.addChangeListener(new ChangeListener() {


			@Override

			public void stateChanged(ChangeEvent e) {


					  int value = slider.getValue();

					  if(slider.getValue() > 0){

					  //String str = Integer.toString(value);

					  //label.setText(str);

						  formen.get(1).setHoehe(hoch);

							hoch = (hoch -5);



					  } else {

						  System.out.println("los");

						  formen.get(1).setHoehe(hoch);

							hoch = (hoch +5);


					  }


					  if(value == 40){

						  System.out.println("nein");

						  formen.get(1).setHoehe(hoch);

						  hoch = (hoch -5);


					  }


					  th.repaint();


			}

		});

	}



	public class Thermometer extends Canvas{


		public Thermometer(){

			setSize(200, 300);




		}


		@Override

		public void paint(Graphics g) {


			for( int i = 0; i < formen.size(); i++){

				//g.fillRect(50, 250, 100, hoch);

				formen.get(i).paint(g);




			}

			//g.drawRect(50, 80, 100, 200);


			//g.drawRect(50, 80, 100, 100);


		}



}


}

ja gut, reicht auch wenn ich eine SWT version habe und die Swing Version dann im Emulator ausgebe, mit der Pixelgröße 1280 x 800. Man hat mir nämlich nur gesagt ich soll Adnroid drauf installieren und das programm dann in nem Emulator ausgeben.

Bearbeitet von flashpixx
Code-Tags
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich vermute mal das du das falsch verstanden hast. Wie soll der jetzige Code im Android-Emulator ausgeführt werden? Wenn das später auf Android kannst du außer die theoretische Logik keine Programmbestandteile deines jetzigen Codes mitnehmen.

Was für Funktionen fehlen momentan in deinem Code bzw. was funktioniert noch nicht?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja tut mir leid aber ich hab echt null Ahnung von diesem Android, hab jetzt erstmal angefangen das Programm auf Swing zu schreiben, und vllt könnt ihr mir da behilflich sein wie ich nachher das programm (von mir aus ohne die codes) im Android übernehmen kann.

Weil die haben es auf jedenfall erwähnt gehabt das ich dieses Thermometer Programm im Emulator ausgeben soll.

1. Frage

In der stateChanged Methode fehlt noch die Abfrage des Reglers also, das wenn ich den regler nach links schiebe das es runter zählt, weil egal ob ich den regler jetzt nach rechts oder links schiebe zählt er um +5 positionen hoch, wie kann ich die Links Richtung abfragen :D?

2. Frage

ich hab wie in den Codes beschrieben 2 Rechtecke gezeichnet einmal "einRechteck" und einmal "flussig", und ich hab versucht das Rechteck "einRechteck" mit fillrect zu füllen so das wenn ich mit der Height von dem 2. Rechteck "flussig" mit dem Slider spiele, die farbe dann hoch und runter sinkt, also kurz gesagt sollte das 2. Rechteck flussig als Maske dienen, nur hat er dann die Rechteck fläche ganz gefüllt. ich will das gefüllte Rechteck unter dem 2. Rechteck legen und das 2. als Maske verwenden.

Könnt ihr mir da ein Rat geben wies geht. dankeschön im Vorraus

Bearbeitet von itselo
Link zu diesem Kommentar
Auf anderen Seiten teilen

OK und wie kann ich jetzt mein Programm das in Swing geschrieben wurde jetzt für android umwandeln? Weil hab bisher Android nicht verwendet und hab kein Plan wie ich das bewerkstelligen soll, vorallem die Tutorials oder infos über Androids eigene Sprache zu lernen dauert bestimmt sehr lange, weil ich hätte nur noch diese Woche bis ich das Programm an Bosch schicken muss.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Oki, hab ne Tut gefunden und es hat wie scheint fehler gegeben

hier ist der Tut: http://www.helloandroid.com/files/xmaswidget/android_howto-hellowidget.pdf

Page 3 ist es

und hier der Fehler,


<receiver android:name=".HelloWidget" android:label="@string/app_name">

<intent-filter>

<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />

</intent-filter>

<meta-data android:name="android.appwidget.provider" android:resource="@xml/hallo_widget_provider" />

</receiver>

Hier unterstreicht er mir das "@xml/hallo_widget_provider" mit rot und gibt den Fehler

error: Error: No resource found that matches the given name(at 'resource' with the value '@xml/hallo_widget_provider').

hab es genauso wie im Tut beschrieben eingefügt aber der zeigt mir diesen nervigen Fehler an, kann auch nicht weiterarbeiten weil ich meine App nicht starten kann.

Bearbeitet von flashpixx
Code-Tags
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hast du denn die Datei res/xml/hello_widget_provider.xml mit folgenden Inhalt erstellt?


<?xml version="1.0" encoding="utf-8"?>

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

android:minWidth="146dip"

android:minHeight="72dip"

android:updatePeriodMillis="10000"

android:initialLayout="@layout/main"

/>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...