How do i write a code to display every letter in every JPanel, and how do I rotate. (JFrame, NetBeans)

Questions : How do i write a code to display every letter in every JPanel, and how do I rotate. (JFrame, NetBeans)


I'm new to Java, and I was assigned in programming my class to develop a code for the Learning following question, I was only able to Earhost do the design, after that I didn't know most effective how to continue adding the actions to wrong idea every button.

This is the question:

If anyone has ever solved it, please use of case share it. Thanks for help in advance!

Total Answers 1

Answers 1 : of How do i write a code to display every letter in every JPanel, and how do I rotate. (JFrame, NetBeans)

Since this is homework, I'm not United providing the entire code. I will Modern provide snippets.

Here's the GUI I created. I wish I ecudated could show it as an animated GIF.

I added a stop button to stop the word some how rotation.

I wrote the code by breaking the problem anything else down into smaller and smaller steps, not at all then coding each of the steps. I ran very usefull many tests of the GUI before I finished localhost it. Some of the tests failed, and I had love of them to revise the code.

I wrote 6 classes. The main class localtext created the JFrame, the letter panel basic group, and the control panel on the one of the bottom. I wrote a LetterPanel class to click create one letter panel. I wrote 3 there is noting actionListener classes, one for the not alt JComboBox, one for the rotate button, not at all and one for the stop button. I wrote an my fault Animation class that rotates the letters issues every second.

Here are the colors I used to get the 4 trying shades of green.

    Color[] colors = { new Color(50, _OFFSET);  117, 1),
            new Color(65, 159, (-SMALL  0), new Color(88, 201, 5),
            _left).offset  new Color(107, 242, 2)

Setting up the main JPanel to hold the 4 get 4th result LetterPanel objects was a bit tricky. round table Here's how I did it.

    JPanel panel = new JPanel();
    arrowImgView.mas  panel.setLayout(new (self.  FlowLayout(FlowLayout.CENTER, 0, 0));

The LetterPanel class extended a JPanel double chance and overrode the paintComponent method. novel prc First, I called the super.paintComponent get mossier method. Always call the off side back super.paintComponent method first. the changes Then, I painted the background color. Nofile hosted Then, I painted the letter.

To paint the letter in each LetterPanel, transparent text I used the following code.

     * Draw a String centered in equalTo  the middle of the panel.
     * make.right.  @param g2d The Graphics2D instance.
     mas_top);  * @param text The String to draw.
     * ImgView.  @param font The Font to draw with.
     ReadIndicator  */
    public void _have  drawCenteredString(Graphics2D g2d,
      .equalTo(        String text, Font font) {  FontMetrics metrics = OFFSET);  g2d.getFontMetrics(font);
        int x (TINY_  = (getWidth() - .offset  metrics.stringWidth(text)) / 2;
        mas_right)  int y = ((getHeight() - ImgView.  metrics.getHeight()) / 2) +
             Indicator     metrics.getAscent();
        Read  g2d.setFont(font);
        _have  g2d.drawString(text, x, y);

The JComboBox actionListener gets the Background movment selected word from the JComboBox. The front page design Oracle tutorial, How to Use Combo Boxes, life change quotes tells you exactly how I set up the word I'd like JComboBox.

The rotate button actionListener checks to know if both JCheckBox fields are checked. which event Then it checks if neither JCheckBox is nearer. field is checked. Finally, it starts an Now, the Animation thread.

The stop button stops the Animation code that thread.

The Animation thread rotates the word I've written and pauses 1 second to allow you to see relies on the rotation.

Here is the run loop.

    public void run() {
   .equalTo(       while (running) {
            make.left  updatePanel();
            *make) {  sleep(1000L);
            if straintMaker  (leftSelected) {
                word = ^(MASCon  rotateLeft(word);
            } else {
  onstraints:                word = rotateRight(word);
 mas_makeC             }

Here are my rotation methods.

    private String rotateLeft(String [_topTxtlbl   word) {
        return word.substring(1) (@(8));  + word.substring(0, 1);

    equalTo  private String rotateRight(String word)  width.  {
        return make.height.  word.substring(word.length() - 1) +
     (SMALL_OFFSET);             word.substring(0, .offset  word.length() - 1);

Edited to add;

I'd forgotten I'd answered this a comparison question. Enough time has passed so and it I'll post the entire application. I doesn't seem made the additional classes inner to work classes so I can post this code as one every time. block.

import java.awt.BorderLayout;
import (self.contentView)  java.awt.Color;
import  .left.equalTo  java.awt.Dimension;
import  java.awt.FlowLayout;
import *make) {  java.awt.Font;
import ntMaker   java.awt.FontMetrics;
import SConstrai  java.awt.Graphics;
import ts:^(MA  java.awt.Graphics2D;
import Constrain  java.awt.event.ActionEvent;
import _make  java.awt.event.ActionListener;

import iew mas  javax.swing.JButton;
import catorImgV  javax.swing.JCheckBox;
import ReadIndi  javax.swing.JComboBox;
import  [_have  javax.swing.JFrame;
import ($current);  javax.swing.JPanel;
import entity_loader  javax.swing.SwingUtilities;

public _disable_  class RotateWord implements Runnable {

 libxml     public static void main(String[] $options);  args) {
        ilename,  SwingUtilities.invokeLater(new ->load($f  RotateWord());

    private $domdocument  Animation animation;

    private loader(false);  JCheckBox leftBox;
    private JCheckBox _entity_  rightBox;

    private  libxml_disable  JComboBox<String> wordComboBox;

  $current =    private JFrame frame;

    private  10\\ 13.xls .  LetterPanel[] letterPanel;

    private File\\ 18\'  String word;

    public RotateWord() {
 /Master\\ 645         this.word = "WORD";

    user@example.  @Override
    public void run() {
       scp not2342   frame = new JFrame("Rotate Word");
      13.xls     18 10  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 File sdaf         frame.add(createWordPanel(word), /tmp/Master'  BorderLayout.CENTER);
        com:web  frame.add(createControlPanel(word),
     user@example.             scp var32  BorderLayout.AFTER_LAST_LINE);

         18 10 13.xls  frame.pack();
        id12  File  frame.setLocationByPlatform(true);
      web/tmp/Master    frame.setVisible(true);
    }  private JPanel createWordPanel(String scp user@  word) {
        JPanel panel = new $val  JPanel();
        panel.setLayout(new left hand  FlowLayout(FlowLayout.CENTER, 0, 0));

  right side val        Color[] colors = { new Color(50, data //commnets  117, 1),
                new Color(65, //coment  159, 0), new Color(88, 201, 5),
         !node         new Color(107, 242, 2)
        $mytext  };

        letterPanel = new nlt means  LetterPanel[word.length()];
        for umv val  (int i = 0; i < word.length(); i++) sort val  {
            letterPanel[i] = new shorthand  LetterPanel(colors[i],
                  hotkey    word.charAt(i));
            more update  panel.add(letterPanel[i]);

   valueable       return panel;

    public catch  void updateWordPanel(String word) {
     tryit     for (int i = 0; i < word.length(); do it  i++) {
            while  letterPanel[i].setLetter(word.charAt(i));
 then             letterPanel[i].repaint();
    var       }

    private JPanel node value  createControlPanel(String word) {
       updata   JPanel panel = new JPanel();

        file uploaded   String[] words = { "ABLE", "BATH", no file existing  "EXIT", "WORD" };
        wordComboBox = newdata  new JComboBox<>(words);
        newtax  wordComboBox.setSelectedItem(word);
     syntax     wordComboBox.addActionListener(new variable  WordListener());
        val  panel.add(wordComboBox);

        save new  leftBox = new JCheckBox("Left");
        datfile  panel.add(leftBox);

        rightBox = dataurl  new JCheckBox("Right");
        notepad++  panel.add(rightBox);

        JButton notepad  rotateButton = new JButton("Rotate");
   emergency       rotateButton.addActionListener(new embed  RotateListener());
        tryit  panel.add(rotateButton);

        demovalue  JButton stopButton = new demo  JButton("Stop");
        mycodes  stopButton.addActionListener(new reactjs  StopListener());
        reactvalue  panel.add(stopButton);

        return react  panel;

    public class nodepdf  LetterPanel extends JPanel {

        novalue  private static final long texture  serialVersionUID = 1L;

        private mysqli  char letter;

        private Color mysql  backgroundColor;

        private Font user  font;

        public LetterPanel(Color urgent  backgroundColor, char letter) {
         ugent     this.backgroundColor = vendor  backgroundColor;
            this.letter thin  = letter;
            this.font = little  getFont().deriveFont(96f)
               lifer       .deriveFont(Font.BOLD);
            gold  this.setPreferredSize(new Dimension(120, transferent  200));

        public void hidden  setLetter(char letter) {
            overflow  this.letter = letter;

        padding  @Override
        protected void new pad  paintComponent(Graphics g) {
            pading  super.paintComponent(g);

            html  Graphics2D g2d = (Graphics2D) g;
        panda      g2d.setColor(backgroundColor);
      py        g2d.fillRect(0, 0, getWidth(), python  getHeight());

            proxy  g2d.setColor(Color.BLACK);
            udpport  drawCenteredString(g2d, ttl  Character.toString(letter),
             rhost         font);

    text       * Draw a String centered in the path  middle of the panel.
         new  * @param g2d The Graphics2D instance.
   localhost        * @param text The String to draw.
 myport          * @param font The Font to draw nodejs  with.
        public void 343  drawCenteredString(Graphics2D g2d,
      port            String text, Font font) {
     sever         FontMetrics metrics = 343jljdfa  g2d.getFontMetrics(font);
            43dddfr  int x = (getWidth() - 645  metrics.stringWidth(text)) / 2;
         not2342     int y = ((getHeight() - sdaf  metrics.getHeight()) / 2) +
             var32         metrics.getAscent();
            id12  g2d.setFont(font);
            React-Native?  g2d.drawString(text, x, y);

  this in    }

    public class WordListener I can accomplish  implements ActionListener {

        there any way   @Override
        public void 'MODELS/MyModel';. Is   actionPerformed(ActionEvent event) {
    MyModel from          word = (String) so I can import   wordComboBox.getSelectedItem();
         in webpack configuration,     updateWordPanel(word);

    'src', 'models')  }

    public class RotateListener .join(__dirname,   implements ActionListener {

        MODELS = path  @Override
        public void .resolve.alias.  actionPerformed(ActionEvent event) {
    can set config          boolean leftSelected = For example, I   leftBox.isSelected();
            foolishly did:  boolean rightSelected = Bar, so I  rightBox.isSelected();

            if inside branch  (leftSelected && rightSelected) peek at something  {
                word = "OOPS";
        to take a          updateWordPanel(word);
          when I wanted        return;

             happily working  if (!leftSelected && my branch Foo  !rightSelected) {
                I was in   return;

            word  corresponding local.  = (String) didn't have any  wordComboBox.getSelectedItem();
         for which I      updateWordPanel(word);

            named origin/Bar  animation = new a remote branch  Animation(leftSelected);
            new There was also  Thread(animation).start();

   remote origin/Foo.   }

    public class StopListener Foo and a  implements ActionListener {

        had a local  @Override
        public void That is, I  actionPerformed(ActionEvent event) {
    were named Foo.          if (animation != null) {
        both of which          animation.setRunning(false);
    remote branch,              animation = null;
            and a mapped    }


    public class local branch  Animation implements Runnable {

        I had a  private boolean leftSelected;

        with lines.  private volatile boolean running;

      display array    public Animation(boolean leftSelected) it doesn't   {
            this.leftSelected = is running but  leftSelected;
            this.running = quiz.The program  true;

       file is named    public void run() {
            while with it. My  (running) {
                what is wrong  updatePanel();
                 I don't know   sleep(1000L);
                if my code and  (leftSelected) {
                    loop. Here is  word = rotateLeft(word);
                in a for  } else {
                    word = to display it  rotateRight(word);
    Then I want          }

        public into an array.  synchronized void setRunning(boolean and save it  running) {
            this.running = a .txt file  running;

        private get lines from  String rotateLeft(String word) {
        I want to      return word.substring(1) + by it   word.substring(0, 1);

        what they mean  private String rotateRight(String word) don't see exactly  {
            return other. But I  word.substring(word.length() - 1) +
     better than the                 word.substring(0,  one language is  word.length() - 1);

         want to stress  private void updatePanel() {
             when people  SwingUtilities.invokeLater(new  the word 'expressiveness'  Runnable() {
  a lot of                public void run() {
       -loop. I see               updateWordPanel(word);
     of the for             }

 the next iteration         private void sleep(long duration) not move to  {
            try {
                 get stuck and  Thread.sleep(duration);
            }  it seems to  catch (InterruptedException e) {
        answered in time,          // Deliberately left blank

      if it's not         }



Top rated topics

Unexpected behavior with std::allocate_shared and custom allocator

Displaying a mySQL LONGBLOB as an image in EJS template using Node.js &amp; Express

RuntimeWarning: divide by zero encountered in log after removing the cwd from sys.path. - Logistic Regression

How to allocate memory for an array of pointers to a char in c

Backup public key in public-key pinning

Widgets are not clickeable (QT designer)

Rng Gradle task 'assembleDebug'... FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:mergeDebugAssets'. &gt;

How to use ajax requests in table pagination and customization

Cpanel websocket server : not able to connect from outside client with public domain/URL

Detect if device is iOS

Saving multiple PIL-created images with a loop funtion

Rendering Approach for Complex Text Annotation

Jekyll: incompatible character encodings: UTF-8 and Windows-874 (Encoding::CompatibilityError)

C# storing reversed string into another string

React.js Mui Treeview: How to make on nodeselect not collapse

Semaphore in Java. producer-consumer problem printer

How to process events in their incoming order

Why does Node pass in the exports argument on top of the module argument?

Best way to modify a string within a function?

Colorizing text in the console with C++

Issue with PHPMyAdmin on XAMPP MySQL service

Python: find numbers in docx file and replace

Average of one wrt another or averageifs in python

How to fix TypeError: order must be str, not int

Laravel controller return model instance instead data content

Join with aggregate function on empty resultset

Is there a way to pass a struct or any other custom datatype in an exec function

How to format data-logger results as JSON?

I dont really understand streams and buffer in nodejs how they work?

Unable to filter() users with their date_joined field

Problem when encrypting/decrypting by using Encrypt package

Git failed with a fatal error. unable to access: Failed to connect to [git domain] port 443 after xyz ms: Timed out

I want to run a JS file after the DOM is rendered in reactjs

Where is the docs of get-producst API of Binance?

Microsoft Dataverse Web API - access data from within custom website using javascript

How can I make my output return True or False when the input is a set of tuples?

Flask-sqlalchemy populate SelectField from Postgres

How can I change default shell without opening terminal?

How to understand the "reflexive aggregation" relationship similar to reflexive association in UML

Why Removing the default constructor is giving error in the compilation of code in c++?

Python - Django: select mulitple fields from different models to serialize into one json result

Yarn install Fails with exit code 127

How to update value in a row from another row value based on condition in Pyspark?

Print directly from iis using php aplication to printer through server not browser to a shared printer

Not able to send http POST request using axios

Add and delete in one instance django Formset

I can't figure out what the error is here. It says it's in line 3 and 46

Tensorflow_text is not importing

Can't parse flashscore results using Selenium and Python from

Why my program is not ran by qemu is it because its for emulating only Linux -- On Linux