zeichnen von text in ein JPanel

Ich bin auf der Suche nach der grundlegenden Beschreibung, wie man zum zeichnen von text in ein JPanel. Ich weiß, es gibt eine Milliarde tutorials gibt, aber keiner von Ihnen hat Klick bei mir und ich habe einige spezielle Fragen, die kann helfen, andere Menschen, die verwirrt sind. Als ein setup (eine Test-app) ich habe eine einzige Klasse, die hat ein JLabel, JTextField, ein JButton und ein JPanel. Die Anwendung liest in int-Werte aus einer externen Datei und sollte anzeigen, deren Durchschnitt in der Systemsteuerung, wenn der JButton gedrückt wird. Ich habe alle der zugrunde liegenden Programmierung aussortiert (das ist die Taste reagiert und druckt den Mittelwert für die Kommandozeile), aber ich kann einfach nicht scheinen, heraus zu Sortieren, wie zum drucken der Durchschnitt auf der Platte. Ich denke, meine größte Frage ist, wie integrieren Sie die paint() oder paintComponet () - Methode, zusammen mit dem rest des Codes. Sollte es sein das es eine eigene Klasse? Sollte das JPanel werden, es ist eine eigene Klasse? Es scheint, wie das ist, was die meisten tutorials sagen mir, ich bin nur nicht sicher, was der erste Schritt ist, genau. Der code sieht wie folgt aus:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;  

public class Main extends JFrame implements ActionListener {
  private int[] intArray = new int[10000];
  private int numOfInts = 0;
  private int avg = 0;

  protected JButton avgBtn;
  protected JTextField indexEntry;
  protected JLabel instructions;
  protected JPanel resultsPanel;

  public Main(){

    //create main frame
    this.setTitle("Section V, question 2");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(350, 250);
    this.setLayout(new GridLayout(4, 1));

    //create instruction label and add to frame
    instructions = new JLabel("Follow the instructions on the exam to use this program");
    this.add(instructions);

    //create textfield for index entry and add to frame
    indexEntry = new JTextField();
    this.add(indexEntry);

    //create button for average and add to frame
    avgBtn = new JButton("Click for Average");
    this.add(avgBtn);
    avgBtn.addActionListener(this);

    //create panel to display results and add to frame
    resultsPanel = new JPanel();
    resultsPanel.setBackground(Color.BLUE);
    this.add(resultsPanel);

    //read in from file
    readFromFile();

    //compute average
    computeAverage();
  }

  private void readFromFile() {
    try {
            //Open the file
            FileInputStream fstream = new FileInputStream("numbers.dat");
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));

            //create placeholder for read in ints
            String strLine;

            //Read File Line By Line
            int i = 0;
            while ((strLine = br.readLine()) != null) {
              //place ints in array and increament the count of ints
              System.out.println (strLine);
              intArray[i] = Integer.parseInt(strLine);
              numOfInts++;
              i++;
            }
            //Close the input stream
            in.close();
            System.out.println ("numOfInts = " + numOfInts);
    }
    catch (Exception e) {
            //Catch exception if any
            System.err.println("Error: " + e.getMessage());
    }
  }

  //compute averaage
  private void computeAverage() {
    int sum = 0;
    for (int i = 0; i < numOfInts; i++)
    sum += intArray[i];
    avg = sum/numOfInts;
    System.out.println("avg = " + avg);
  }

//event handling
public void actionPerformed(ActionEvent e) {
    if(e.getSource() == avgBtn) {
            computeAverage();
    }
}

//"main" function
public static void main(String[] args) {
    Main m = new Main();
    m.setVisible(true);
}

//paint
public void paintComponent(Graphics g){
  g.drawString(avg, 75, 75);
}
}

Jegliche Hilfe/Richtung, wird sehr geschätzt. Ich weiß, ich habe diesen code vor kurzem für die anderen Fragen, ich will nur alles wissen! Im Idealfall wird das panel zeigt die durchschnittlichen Lesen Sie in int-Werte, wenn auf die Schaltfläche geklickt wurde, und wird alles angezeigt, was eingetragen wurde in die textfeild, wenn der Fokus wurde auf und geben Sie gedrückt wurde, aber ich bin die baby-Schritte, und wie ich schon sagte, möchte ich für diesen thread zu einem Allgemeinen tutorial für andere mit ähnlichen Fragen, nicht die Antworten von sun docs oder anderen Websites. Vielen Dank im Voraus. Dan 🙂

InformationsquelleAutor danwoods | 2009-12-02

Schreibe einen Kommentar