Java Scrollbar

Kennold

Grünschnabel
Guten Abend liebe Community,
ich habe vergeblich im Netzt nach einer Lösung meines Problems gesucht, vielleicht könnt ihr mir helfen.

Also, ich möchte ein Programm schreiben, welches den Flächeninhalt von einem Rechteck, Quadrat und einem Kreis ausrechnen. Das gante erfolgt über Buttons und Eingabefelder.
Nun möchte ich, dass man die Zahlen im Eingabefeld mit einer Scrollbar verändern kann, sodass man keine Zahlen mehr eintippen muss, sondern den wert mit der Scrollbar einstellen kann.

Nun zu meinem Problem, zur zeit Hänge ich an der Scrollbar.
Ich habe 2 Scrollbars erzeugt, dennoch haben diese beiden keine Funktion und ich bin ratlos, wie ich diese beiden Scrollbars verändern muss, sodass ich sie verwenden kann wie gewünscht.


Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;

public class Oberflaeche extends Frame implements ActionListener, AdjustmentListener {
  Button btnRechteck;
  Button btnQuadrat;
  Button btnKreis;
  Scrollbar sliderOne;
  Scrollbar sliderTwo;
  Label text1;
  Label text2;
  TextField tfAusgabeOne;
  TextField tfAusgabeTwo;
  TextField tfAusgabeThree;
  int flaecheRechteck=0;
  int flaecheQuadrat=0;
  double flaecheKreis=0;
  int zahl1=0;
  int zahl2=0;
 
 
 
  public static void main(String args[]) {
    Oberflaeche dieOberflaeche;
    dieOberflaeche = new Oberflaeche();
  }
  public Oberflaeche() {
    setTitle("Berechnen von Figuren");
    setSize(300,160);
    //setResizable(false);
    setLayout(new FlowLayout());
   
    btnRechteck = new Button("    Rechteck    ");
    add(btnRechteck);
    btnRechteck.addActionListener(this);
   
    btnQuadrat = new Button("    Quadrat    ");
    add(btnQuadrat);
    btnQuadrat.addActionListener(this);
   
    btnKreis = new Button("    Kreis    ");
    add(btnKreis);
    btnKreis.addActionListener(this);
   
    sliderOne=new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 255);
    add(sliderOne);  
   
    tfAusgabeOne = new TextField(5);
    add(tfAusgabeOne);
    text1 = new Label("Laenge, Kante, Radius");
    add(text1);
   
    sliderTwo=new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 255);
    add(sliderTwo);
   
    tfAusgabeTwo = new TextField(5);
    add(tfAusgabeTwo);
    text2 = new Label("Breite                                ");
    add(text2);
   
    tfAusgabeThree = new TextField(35);
    add(tfAusgabeThree);
   
    setVisible(true);
   
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
  }
 
  public void berechneRechteckflaeche(int pNeueBreite, int pNeueLaenge){
    flaecheRechteck=pNeueLaenge*pNeueBreite;
  }
 
  public void berechneQuadratflaeche(int pNeueBreite){
    flaecheQuadrat=pNeueBreite*pNeueBreite;
  }
 
  public void berechneKreisflaeche(double pNeuerRadius){
    flaecheKreis=pNeuerRadius*3.14; 
  }
 
  public void actionPerformed(ActionEvent event) {
    int neueLaenge;
    int neueBreite;
    int neuerRadius; 
    if (event.getSource()==btnRechteck) {
      neueLaenge=Integer.parseInt(tfAusgabeOne.getText());
      neueBreite=Integer.parseInt(tfAusgabeTwo.getText());
      berechneRechteckflaeche(neueBreite,neueLaenge);
      tfAusgabeThree.setText(""+flaecheRechteck);
    }
    if (event.getSource()==btnQuadrat) {
      neueBreite=Integer.parseInt(tfAusgabeTwo.getText());
      berechneQuadratflaeche(neueBreite);
      tfAusgabeThree.setText(""+flaecheQuadrat);
    }
    if (event.getSource()==btnKreis) {
      neuerRadius=Integer.parseInt(tfAusgabeTwo.getText());
      berechneKreisflaeche(neuerRadius);
      tfAusgabeThree.setText(""+flaecheKreis);
    } 
  }
  public void adjustmentValueChanged(AdjustmentEvent e){
    zahl1=sliderOne.getValue();
    tfAusgabeOne.setText("");
    repaint();
  }
}
 
Hi Kennold!

Erstmal zu deinem Code:
Du verwendest java.awt Komponenten auf einem javax.swing.JFrame...warum nicht gleich nur swing-Komponenten?? (Also JTextField statt TextField und JButton statt Button etc. etc.).

Nun zu deinem Vorhaben:
Du benötigst dafür keine Scrollbar -> Die ist nur zum Scrollen im Panel (oder z.B. hier im Browser). Du benötigst den JSlider (weiß jetzt nicht ob's auch eine AWT-Slider Komponente gibt). Wenn du die Änderung über einen ChangedListener abfängst, kannst du diese dann auch im Textfeld anzeigen.

Gruß
Daniel
 

Neue Beiträge

Zurück