kandi background
Explore Kits

FlowLayout | Android流式布局,支持单选、多选等,适合用于产品标签等。

 by   hongyangAndroid Java Version: Current License: Apache-2.0

 by   hongyangAndroid Java Version: Current License: Apache-2.0

Download this library from

kandi X-RAY | FlowLayout Summary

FlowLayout is a Java library. FlowLayout has no bugs, it has no vulnerabilities, it has build file available, it has a Permissive License and it has medium support. You can download it from GitHub.
[不再维护]Android流式布局,支持单选、多选等,适合用于产品标签等。
Support
Support
Quality
Quality
Security
Security
License
License
Reuse
Reuse

kandi-support Support

  • FlowLayout has a medium active ecosystem.
  • It has 5501 star(s) with 1154 fork(s). There are 139 watchers for this library.
  • It had no major release in the last 12 months.
  • FlowLayout has no issues reported. There are 7 open pull requests and 0 closed requests.
  • It has a neutral sentiment in the developer community.
  • The latest version of FlowLayout is current.
FlowLayout Support
Best in #Java
Average in #Java
FlowLayout Support
Best in #Java
Average in #Java

quality kandi Quality

  • FlowLayout has 0 bugs and 0 code smells.
FlowLayout Quality
Best in #Java
Average in #Java
FlowLayout Quality
Best in #Java
Average in #Java

securitySecurity

  • FlowLayout has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
  • FlowLayout code analysis shows 0 unresolved vulnerabilities.
  • There are 0 security hotspots that need review.
FlowLayout Security
Best in #Java
Average in #Java
FlowLayout Security
Best in #Java
Average in #Java

license License

  • FlowLayout is licensed under the Apache-2.0 License. This license is Permissive.
  • Permissive licenses have the least restrictions, and you can use them in most projects.
FlowLayout License
Best in #Java
Average in #Java
FlowLayout License
Best in #Java
Average in #Java

buildReuse

  • FlowLayout releases are not available. You will need to build from source code and install.
  • Build file is available. You can build the component from source.
  • Installation instructions are not available. Examples and code snippets are available.
  • FlowLayout saves you 568 person hours of effort in developing the same functionality from scratch.
  • It has 1328 lines of code, 65 functions and 38 files.
  • It has medium code complexity. Code complexity directly impacts maintainability of the code.
FlowLayout Reuse
Best in #Java
Average in #Java
FlowLayout Reuse
Best in #Java
Average in #Java
Top functions reviewed by kandi - BETA

kandi has reviewed FlowLayout and discovered the below as its top functions. This is intended to give you an instant insight into FlowLayout implemented functionality, and help decide if they suit your requirements.

  • Updates all sub - views .
  • Renders all child views
  • method to change the adapter
  • Initializes the Fragment .
  • Display view .
  • Do select .
  • region CreateDrawable methods
  • Sets the checked state .
  • Sets the selected list .
  • On create view .

FlowLayout Key Features

[不再维护]Android流式布局,支持单选、多选等,适合用于产品标签等。

用法

copy iconCopydownload iconDownload
dependencies {
 compile 'com.hyman:flowlayout-lib:1.1.2'
}

声明

copy iconCopydownload iconDownload
 <com.zhy.view.flowlayout.TagFlowLayout
        android:id="@+id/id_flowlayout"
        zhy:max_select="-1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="20dp">
    </com.zhy.view.flowlayout.TagFlowLayout>

对于选中状态

copy iconCopydownload iconDownload
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/tag_select_textcolor"
          android:drawable="@drawable/checked_bg"
          android:state_checked="true"></item>
    <item android:drawable="@drawable/normal_bg"></item>
</selector>

How to add to a JPanel from another class

copy iconCopydownload iconDownload
JLabel title = new JLabel("Dynamic Memory Allocation Simulator");
this.title = new JLabel("Dynamic Memory Allocation Simulator");
-----------------------
JLabel title = new JLabel("Dynamic Memory Allocation Simulator");
this.title = new JLabel("Dynamic Memory Allocation Simulator");

how to enforce same label height of shiny inputs?

copy iconCopydownload iconDownload
style = "display:flex;align-items:flex-end"
if (interactive()) {
  
  
  
  # demoing group support in the `choices` arg
  shinyApp(
    ui = fluidPage(
      mainPanel(
        flowLayout(
          style = "display:flex;align-items:flex-end",
          selectInput("state", "Choose a state:",
                      list(`East Coast` = list("NY", "NJ", "CT"),
                           `West Coast` = list("WA", "OR", "CA"),
                           `Midwest` = list("MN", "WI", "IA")),
          ),
          selectInput("stat2", "Variable description with a way longer description to enforce linebreak:",
                      list(`East Coast` = list("NY", "NJ", "CT"),
                           `West Coast` = list("WA", "OR", "CA"),
                           `Midwest` = list("MN", "WI", "IA")),
          )),# end of inputs
        
        textOutput("result"),
        width = 12
      )),
    server = function(input, output) {
      output$result <- renderText({
        paste("You chose", input$state)
      })
    }
  )
}
-----------------------
style = "display:flex;align-items:flex-end"
if (interactive()) {
  
  
  
  # demoing group support in the `choices` arg
  shinyApp(
    ui = fluidPage(
      mainPanel(
        flowLayout(
          style = "display:flex;align-items:flex-end",
          selectInput("state", "Choose a state:",
                      list(`East Coast` = list("NY", "NJ", "CT"),
                           `West Coast` = list("WA", "OR", "CA"),
                           `Midwest` = list("MN", "WI", "IA")),
          ),
          selectInput("stat2", "Variable description with a way longer description to enforce linebreak:",
                      list(`East Coast` = list("NY", "NJ", "CT"),
                           `West Coast` = list("WA", "OR", "CA"),
                           `Midwest` = list("MN", "WI", "IA")),
          )),# end of inputs
        
        textOutput("result"),
        width = 12
      )),
    server = function(input, output) {
      output$result <- renderText({
        paste("You chose", input$state)
      })
    }
  )
}

Java Swing Scrollpane not scrolling

copy iconCopydownload iconDownload
JScrollPane scrollPane = new JScrollPane(moviePanel);
...    
contentPanel.add(moviePanel);
contentPanel.add(scrollPane);
//frame.add(moviePanel, BorderLayout.CENTER);
frame.add(new JScrollPane(moviePanel), BorderLayout.CENTER);
-----------------------
JScrollPane scrollPane = new JScrollPane(moviePanel);
...    
contentPanel.add(moviePanel);
contentPanel.add(scrollPane);
//frame.add(moviePanel, BorderLayout.CENTER);
frame.add(new JScrollPane(moviePanel), BorderLayout.CENTER);

android:exported needs to be explicitly specified for &lt;activity&gt;. Apps targeting Android 12 and higher are required to specify

copy iconCopydownload iconDownload
<receiver android:name="<name_of_the_entry>"
                android:exported="false or true"
                tools:node="merge" />
-----------------------
     <activity
                android:name="<activity which is giving error>"
                android:exported="true"
                tools:node="merge" />
-----------------------
<activity android:name="name_of_the_activity_inside_library>"
    android:exported="false|true"
    tools:node="merge" />
-----------------------
debugImplementation "androidx.fragment:fragment-testing:<version>"
androidTestImplementation "androidx.fragment:fragment-testing:<version>"
-----------------------
debugImplementation "androidx.fragment:fragment-testing:<version>"
androidTestImplementation "androidx.fragment:fragment-testing:<version>"
-----------------------
 android:exported="true"
-----------------------
androidTestImplementation "androidx.test.ext:junit:1.1.3"
androidTestImplementation "androidx.compose.ui:ui-test-junit4:1.0.4"
-----------------------
> java.util.concurrent.ExecutionException: com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/app/xxxxx.tmp/base.apk (at Binary XML file line #129): YOUR.FULLY.QUALIFIED.NAME.FAILING.ACTIVITY: Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present
-----------------------
<activity android:name="androidx.test.core.app.InstrumentationActivityInvoker$BootstrapActivity"
android:exported="true"
tools:node="merge"/>

<activity android:name="androidx.test.core.app.InstrumentationActivityInvoker$EmptyActivity"
android:exported="true"
tools:node="merge"/>

<activity android:name="androidx.test.core.app.InstrumentationActivityInvoker$EmptyFloatingActivity"
android:exported="true"
tools:node="merge"/>
-----------------------
 <activity
        android:name="com.test.activity.SplashActivity"
        android:clearTaskOnLaunch="true"
        android:label="@string/app_name"
        android:launchMode="singleTop"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar"
        android:exported="true">
   <receiver
        android:name="com.test.receiver.ShareReceiver"
        android:exported="true">
        <intent-filter>
            <action android:name="com.test.fcm.android.action.broadcast" />
        </intent-filter>
    </receiver>

   <service
        android:name="com.google.android.gms.tagmanager.InstallReferrerService"
        android:exported="true" />
testImplementation 'junit:junit:4.13.2' 
androidTestImplementation 'androidx.test:runner:1.4.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation 'com.razorpay:checkout:1.6.15'
-----------------------
 <activity
        android:name="com.test.activity.SplashActivity"
        android:clearTaskOnLaunch="true"
        android:label="@string/app_name"
        android:launchMode="singleTop"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar"
        android:exported="true">
   <receiver
        android:name="com.test.receiver.ShareReceiver"
        android:exported="true">
        <intent-filter>
            <action android:name="com.test.fcm.android.action.broadcast" />
        </intent-filter>
    </receiver>

   <service
        android:name="com.google.android.gms.tagmanager.InstallReferrerService"
        android:exported="true" />
testImplementation 'junit:junit:4.13.2' 
androidTestImplementation 'androidx.test:runner:1.4.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation 'com.razorpay:checkout:1.6.15'
-----------------------
 <activity
        android:name="com.test.activity.SplashActivity"
        android:clearTaskOnLaunch="true"
        android:label="@string/app_name"
        android:launchMode="singleTop"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar"
        android:exported="true">
   <receiver
        android:name="com.test.receiver.ShareReceiver"
        android:exported="true">
        <intent-filter>
            <action android:name="com.test.fcm.android.action.broadcast" />
        </intent-filter>
    </receiver>

   <service
        android:name="com.google.android.gms.tagmanager.InstallReferrerService"
        android:exported="true" />
testImplementation 'junit:junit:4.13.2' 
androidTestImplementation 'androidx.test:runner:1.4.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation 'com.razorpay:checkout:1.6.15'
-----------------------
"com.google.dagger:hilt-android:2.38.1"
"com.google.dagger:hilt-android-gradle-plugin:2.38.1"
"com.google.dagger:hilt-android-compiler:2.38.1"
"com.google.dagger:hilt-android-testing:2.38.1"
"com.google.dagger:hilt-android:2.40.5"
"com.google.dagger:hilt-android-gradle-plugin:2.40.5"
"com.google.dagger:hilt-android-compiler:2.40.5"
"com.google.dagger:hilt-android-testing:2.40.5" 
-----------------------
"com.google.dagger:hilt-android:2.38.1"
"com.google.dagger:hilt-android-gradle-plugin:2.38.1"
"com.google.dagger:hilt-android-compiler:2.38.1"
"com.google.dagger:hilt-android-testing:2.38.1"
"com.google.dagger:hilt-android:2.40.5"
"com.google.dagger:hilt-android-gradle-plugin:2.40.5"
"com.google.dagger:hilt-android-compiler:2.40.5"
"com.google.dagger:hilt-android-testing:2.40.5" 
-----------------------
<receiver
    android:name="com.razorpay.RzpTokenReceiver"
    android:exported="false">
    <intent-filter>
        <action android:name="rzp.device_token.share" />
    </intent-filter>
</receiver>

<activity
    android:name="com.razorpay.CheckoutActivity"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
    android:exported="true"
    android:theme="@style/CheckoutTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <data
            android:host="rzp.io"
            android:scheme="io.rzp" />
    </intent-filter>
</activity>
-----------------------
android:exported="true" <!-- or false as required -->
-----------------------
<activity
     android:name=".MainActivity"
     android:exported="true" <** add this line on AndroidManifest.xml**
     android:launchMode="singleTop"
     android:theme="@style/LaunchTheme"
 </activity>

Java Swing GridLayout Change Grid Sizes

copy iconCopydownload iconDownload
public static JPanel createMoviePanel() {
    JPanel movieLibraryPanel = new JPanel(new GridLayout(0, 10, 3, 3));
    movieLibraryPanel.setBackground(new Color(132, 132, 132));

    int m = 5;
    BufferedImage image = new BufferedImage(9 * m, 16 * m, BufferedImage.TYPE_INT_RGB);
    for (int ii = 1; ii < 21; ii++) {
        JButton picButton = new JButton("Mov " + ii, new ImageIcon(image));
        picButton.setMargin(new Insets(0,0,0,0));
        picButton.setForeground(Color.WHITE);
        picButton.setContentAreaFilled(false);
        picButton.setHorizontalTextPosition(JButton.CENTER);
        picButton.setVerticalTextPosition(JButton.BOTTOM);
        movieLibraryPanel.add(picButton);
    }

    return movieLibraryPanel;
}
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;

class MovieGrid {

    MovieGrid() {
        JFrame f = new JFrame("Movie Grid");
        f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        f.setLocationByPlatform(true);
        f.add(createMoviePanel());
        f.pack();
        f.setVisible(true);
    }

    public static JPanel createMoviePanel() {
        JPanel movieLibraryPanel = new JPanel(new GridLayout(0, 10, 3, 3));
        movieLibraryPanel.setBackground(new Color(132, 132, 132));

        int m = 5;
        BufferedImage image = new BufferedImage(
                9 * m, 16 * m, BufferedImage.TYPE_INT_RGB);
        for (int ii = 2001; ii < 2021; ii++) {
            JButton picButton = new JButton(
                    "<html>Movie<br>" + ii, new ImageIcon(image));
            picButton.setMargin(new Insets(0,0,0,0));
            picButton.setForeground(Color.WHITE);
            picButton.setContentAreaFilled(false);
            picButton.setHorizontalTextPosition(JButton.CENTER);
            picButton.setVerticalTextPosition(JButton.BOTTOM);
            movieLibraryPanel.add(picButton);
        }

        return movieLibraryPanel;
    }

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                new MovieGrid();
            }
        };
        SwingUtilities.invokeLater(r);
    }
}
-----------------------
public static JPanel createMoviePanel() {
    JPanel movieLibraryPanel = new JPanel(new GridLayout(0, 10, 3, 3));
    movieLibraryPanel.setBackground(new Color(132, 132, 132));

    int m = 5;
    BufferedImage image = new BufferedImage(9 * m, 16 * m, BufferedImage.TYPE_INT_RGB);
    for (int ii = 1; ii < 21; ii++) {
        JButton picButton = new JButton("Mov " + ii, new ImageIcon(image));
        picButton.setMargin(new Insets(0,0,0,0));
        picButton.setForeground(Color.WHITE);
        picButton.setContentAreaFilled(false);
        picButton.setHorizontalTextPosition(JButton.CENTER);
        picButton.setVerticalTextPosition(JButton.BOTTOM);
        movieLibraryPanel.add(picButton);
    }

    return movieLibraryPanel;
}
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;

class MovieGrid {

    MovieGrid() {
        JFrame f = new JFrame("Movie Grid");
        f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        f.setLocationByPlatform(true);
        f.add(createMoviePanel());
        f.pack();
        f.setVisible(true);
    }

    public static JPanel createMoviePanel() {
        JPanel movieLibraryPanel = new JPanel(new GridLayout(0, 10, 3, 3));
        movieLibraryPanel.setBackground(new Color(132, 132, 132));

        int m = 5;
        BufferedImage image = new BufferedImage(
                9 * m, 16 * m, BufferedImage.TYPE_INT_RGB);
        for (int ii = 2001; ii < 2021; ii++) {
            JButton picButton = new JButton(
                    "<html>Movie<br>" + ii, new ImageIcon(image));
            picButton.setMargin(new Insets(0,0,0,0));
            picButton.setForeground(Color.WHITE);
            picButton.setContentAreaFilled(false);
            picButton.setHorizontalTextPosition(JButton.CENTER);
            picButton.setVerticalTextPosition(JButton.BOTTOM);
            movieLibraryPanel.add(picButton);
        }

        return movieLibraryPanel;
    }

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                new MovieGrid();
            }
        };
        SwingUtilities.invokeLater(r);
    }
}
-----------------------
final class Testing 
{
 public static void main(String[] args)
 {
  JFrame frame=new JFrame("NEFLIX");
  
  frame.setContentPane(new GridDisplay()); 
  frame.pack();
  frame.setResizable(false);
  
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setVisible(true);
 }
 
 private static final class GridDisplay extends JPanel implements ActionListener
 {
  private GridDisplay()
  {
   super(new GridLayout(0,5,20,20));
   
   setBackground(new Color(0,0,0,255));
   
   BufferedImage image=new BufferedImage(150,200,BufferedImage.TYPE_INT_RGB); 
   Graphics2D g2d=(Graphics2D)image.getGraphics();  
   g2d.setColor(Color.BLUE);  
   g2d.fillRect(0,0,image.getWidth(),image.getHeight());
   
   HoverPainter painter=new HoverPainter();  
   for(int i=0;i<10;i++)
   {
    TVShowCard card=new TVShowCard(image,"Show "+i,"199"+i);   
    card.addMouseListener(painter);   
    add(card);
   }
  }

  //highlight only on hover
  private final class HoverPainter extends MouseAdapter
  {
   @Override
   public void mouseExited(MouseEvent e) {
    ((TVShowCard)e.getSource()).setBorderPainted(false);
   }

   @Override
   public void mouseEntered(MouseEvent e) {
    ((TVShowCard)e.getSource()).setBorderPainted(true);
   }  
  } 
  
  private final class TVShowCard extends JButton
  {
   private TVShowCard(BufferedImage preview,String name,String year)
   {
    super();
       
    setContentAreaFilled(false);
    setBackground(new Color(0,0,0,0));
    setFocusPainted(false);  
    setBorderPainted(false);

    //I didn't use image icon & text horizontal allignment because the text always horizontally centered aligned but from the expected output it was left  so created 2 labels for the job            

    setLayout(new GridBagLayout());
    addIcon(preview);  
    addLabel(name,year);
      
    addActionListener(GridDisplay.this);
   }
   
   private void addIcon(BufferedImage preview)
   {
    JLabel icon=new JLabel();   
    icon.setIcon(new ImageIcon(preview));  
    add(icon,new GridBagConstraints(0,0,1,1,1.0f,0.0f,GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(0,0,0,0),0,0));
   }
   
   private void addLabel(String name,String year)
   {
    JLabel label=new JLabel("<html><body>"+name+"<br>"+year+"</body></html>");   
    label.setForeground(Color.white);  
    label.setBackground(new Color(0,0,0,0));
    add(label,new GridBagConstraints(0,1,1,1,1.0f,1.0f,GridBagConstraints.SOUTHWEST,GridBagConstraints.NONE,new Insets(5,0,0,0),0,0));
   }
  } 
  
  @Override
  public void actionPerformed(ActionEvent e)
  {
   TVShowCard card=(TVShowCard)e.getSource();
   
   //do stuff with it
  }
 } 
}

Adding an image to a frame by button press

copy iconCopydownload iconDownload
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import javax.swing.JLabel;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;

public class MainFram {

    private JFrame frame;
    private JPanel cardsPanel;
    private JPanel firstPanel;
    private JLabel firstLabel;
    private JPanel secondPanel;
    private JLabel secondLabel;
    private JPanel buttonsPanel;
    private JButton insertButton;
    private JButton quitButton;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MainFram window = new MainFram();
                    window.frame.setVisible(true);
                }
                catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public MainFram() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(getCardsPanel(), BorderLayout.CENTER);
        frame.getContentPane().add(getButtonsPanel(), BorderLayout.SOUTH);
    }

    private JPanel getCardsPanel() {
        if (cardsPanel == null) {
            cardsPanel = new JPanel();
            cardsPanel.setLayout(new CardLayout(0, 0));
            cardsPanel.add(getFirstPanel(), "first");
            cardsPanel.add(getSecondPanel(), "second");
        }
        return cardsPanel;
    }

    private JPanel getFirstPanel() {
        if (firstPanel == null) {
            firstPanel = new JPanel();
            firstPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
            firstPanel.add(getFirstLabel());
        }
        return firstPanel;
    }

    private JLabel getFirstLabel() {
        if (firstLabel == null) {
            firstLabel = new JLabel("");
            firstLabel.setIcon(new ImageIcon(getClass().getResource("underwater-600x450.png")));
        }
        return firstLabel;
    }

    private JPanel getSecondPanel() {
        if (secondPanel == null) {
            secondPanel = new JPanel();
            secondPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
            secondPanel.add(getLabel_1());
        }
        return secondPanel;
    }

    private JLabel getLabel_1() {
        if (secondLabel == null) {
            secondLabel = new JLabel("");
            secondLabel.setIcon(new ImageIcon(getClass().getResource("Stone.png")));
        }
        return secondLabel;
    }

    private JPanel getButtonsPanel() {
        if (buttonsPanel == null) {
            buttonsPanel = new JPanel();
            buttonsPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
            buttonsPanel.add(getInsertButton());
            buttonsPanel.add(getQuitButton());
        }
        return buttonsPanel;
    }

    private JButton getInsertButton() {
        if (insertButton == null) {
            insertButton = new JButton("Einfügen");
            insertButton.addActionListener(this::insertAction);
        }
        return insertButton;
    }

    private JButton getQuitButton() {
        if (quitButton == null) {
            quitButton = new JButton("Quit");
            quitButton.addActionListener(e -> System.exit(0));
        }
        return quitButton;
    }

    private void insertAction(ActionEvent event) {
        CardLayout cardLayout = (CardLayout) cardsPanel.getLayout();
        cardLayout.next(cardsPanel);
    }
}
-----------------------
public class Mainframe {

    private JFrame frmOceanlife;
    JLabel piclabel;
...
...
panel.setBounds(70, 75, 600, 450);
panel.setLayout(new FlowLayout());
piclabel = new JLabel(new ImageIcon("underwater-600x450.png"));
...
btnNewButton_5.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        ImageIcon icon = new ImageIcon("Stone.png");
        piclabel.setIcon(icon);
        
    }
}); 
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
import javax.swing.*;

public class Mainframe {
    
    private JFrame frmOceanlife;
    Box box;
    JScrollPane scrollPane;
    
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Mainframe mf = new Mainframe();
                    mf.initialize();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        
        JButton insertBtn = new JButton("Einfügen");
        insertBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ImageIcon icon = new ImageIcon("Stone.png");
                JLabel label = new JLabel(icon);
                box.add(Box.createRigidArea(new Dimension(0, 5)));// creates space between the JLabels
                box.add(label);
                frmOceanlife.repaint();
                frmOceanlife.revalidate();
                Rectangle bounds = label.getBounds();
                scrollPane.getViewport().scrollRectToVisible(bounds);// scroll to the new image

            }
        });

        JButton quitBtn = new JButton("Quit");
        quitBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });

        box = new Box(BoxLayout.Y_AXIS);
        JLabel piclabel = new JLabel(new ImageIcon("underwater-600x450.png"));
        box.add(piclabel);
        
        scrollPane = new JScrollPane(box);
        Dimension dim = new Dimension(box.getComponent(0).getPreferredSize());
        scrollPane.getViewport().setPreferredSize(dim);
        scrollPane.getVerticalScrollBar().setUnitIncrement(dim.height);
        scrollPane.getViewport().setBackground(Color.WHITE);

        JPanel controlPanel = new JPanel();
        controlPanel.setLayout(new FlowLayout());
        controlPanel.add(insertBtn);
        controlPanel.add(quitBtn);
        
        JLabel titleLbl = new JLabel("Welcome to Oceanlife - Your Ocean size is 600x450!", SwingConstants.CENTER);
       
        frmOceanlife = new JFrame();
        frmOceanlife.getContentPane().add(titleLbl, BorderLayout.NORTH);
        frmOceanlife.getContentPane().add(scrollPane, BorderLayout.CENTER);
        frmOceanlife.getContentPane().add(controlPanel, BorderLayout.SOUTH);
        frmOceanlife.setTitle("OceanLife");
        frmOceanlife.pack();
        frmOceanlife.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmOceanlife.setLocationRelativeTo(null);
        frmOceanlife.setVisible(true);

    }
}
-----------------------
public class Mainframe {

    private JFrame frmOceanlife;
    JLabel piclabel;
...
...
panel.setBounds(70, 75, 600, 450);
panel.setLayout(new FlowLayout());
piclabel = new JLabel(new ImageIcon("underwater-600x450.png"));
...
btnNewButton_5.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        ImageIcon icon = new ImageIcon("Stone.png");
        piclabel.setIcon(icon);
        
    }
}); 
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
import javax.swing.*;

public class Mainframe {
    
    private JFrame frmOceanlife;
    Box box;
    JScrollPane scrollPane;
    
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Mainframe mf = new Mainframe();
                    mf.initialize();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        
        JButton insertBtn = new JButton("Einfügen");
        insertBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ImageIcon icon = new ImageIcon("Stone.png");
                JLabel label = new JLabel(icon);
                box.add(Box.createRigidArea(new Dimension(0, 5)));// creates space between the JLabels
                box.add(label);
                frmOceanlife.repaint();
                frmOceanlife.revalidate();
                Rectangle bounds = label.getBounds();
                scrollPane.getViewport().scrollRectToVisible(bounds);// scroll to the new image

            }
        });

        JButton quitBtn = new JButton("Quit");
        quitBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });

        box = new Box(BoxLayout.Y_AXIS);
        JLabel piclabel = new JLabel(new ImageIcon("underwater-600x450.png"));
        box.add(piclabel);
        
        scrollPane = new JScrollPane(box);
        Dimension dim = new Dimension(box.getComponent(0).getPreferredSize());
        scrollPane.getViewport().setPreferredSize(dim);
        scrollPane.getVerticalScrollBar().setUnitIncrement(dim.height);
        scrollPane.getViewport().setBackground(Color.WHITE);

        JPanel controlPanel = new JPanel();
        controlPanel.setLayout(new FlowLayout());
        controlPanel.add(insertBtn);
        controlPanel.add(quitBtn);
        
        JLabel titleLbl = new JLabel("Welcome to Oceanlife - Your Ocean size is 600x450!", SwingConstants.CENTER);
       
        frmOceanlife = new JFrame();
        frmOceanlife.getContentPane().add(titleLbl, BorderLayout.NORTH);
        frmOceanlife.getContentPane().add(scrollPane, BorderLayout.CENTER);
        frmOceanlife.getContentPane().add(controlPanel, BorderLayout.SOUTH);
        frmOceanlife.setTitle("OceanLife");
        frmOceanlife.pack();
        frmOceanlife.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmOceanlife.setLocationRelativeTo(null);
        frmOceanlife.setVisible(true);

    }
}
-----------------------
public class Mainframe {

    private JFrame frmOceanlife;
    JLabel piclabel;
...
...
panel.setBounds(70, 75, 600, 450);
panel.setLayout(new FlowLayout());
piclabel = new JLabel(new ImageIcon("underwater-600x450.png"));
...
btnNewButton_5.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        ImageIcon icon = new ImageIcon("Stone.png");
        piclabel.setIcon(icon);
        
    }
}); 
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
import javax.swing.*;

public class Mainframe {
    
    private JFrame frmOceanlife;
    Box box;
    JScrollPane scrollPane;
    
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Mainframe mf = new Mainframe();
                    mf.initialize();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        
        JButton insertBtn = new JButton("Einfügen");
        insertBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ImageIcon icon = new ImageIcon("Stone.png");
                JLabel label = new JLabel(icon);
                box.add(Box.createRigidArea(new Dimension(0, 5)));// creates space between the JLabels
                box.add(label);
                frmOceanlife.repaint();
                frmOceanlife.revalidate();
                Rectangle bounds = label.getBounds();
                scrollPane.getViewport().scrollRectToVisible(bounds);// scroll to the new image

            }
        });

        JButton quitBtn = new JButton("Quit");
        quitBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });

        box = new Box(BoxLayout.Y_AXIS);
        JLabel piclabel = new JLabel(new ImageIcon("underwater-600x450.png"));
        box.add(piclabel);
        
        scrollPane = new JScrollPane(box);
        Dimension dim = new Dimension(box.getComponent(0).getPreferredSize());
        scrollPane.getViewport().setPreferredSize(dim);
        scrollPane.getVerticalScrollBar().setUnitIncrement(dim.height);
        scrollPane.getViewport().setBackground(Color.WHITE);

        JPanel controlPanel = new JPanel();
        controlPanel.setLayout(new FlowLayout());
        controlPanel.add(insertBtn);
        controlPanel.add(quitBtn);
        
        JLabel titleLbl = new JLabel("Welcome to Oceanlife - Your Ocean size is 600x450!", SwingConstants.CENTER);
       
        frmOceanlife = new JFrame();
        frmOceanlife.getContentPane().add(titleLbl, BorderLayout.NORTH);
        frmOceanlife.getContentPane().add(scrollPane, BorderLayout.CENTER);
        frmOceanlife.getContentPane().add(controlPanel, BorderLayout.SOUTH);
        frmOceanlife.setTitle("OceanLife");
        frmOceanlife.pack();
        frmOceanlife.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmOceanlife.setLocationRelativeTo(null);
        frmOceanlife.setVisible(true);

    }
}
-----------------------
public class Mainframe {

    private JFrame frmOceanlife;
    JLabel piclabel;
...
...
panel.setBounds(70, 75, 600, 450);
panel.setLayout(new FlowLayout());
piclabel = new JLabel(new ImageIcon("underwater-600x450.png"));
...
btnNewButton_5.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        ImageIcon icon = new ImageIcon("Stone.png");
        piclabel.setIcon(icon);
        
    }
}); 
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
import javax.swing.*;

public class Mainframe {
    
    private JFrame frmOceanlife;
    Box box;
    JScrollPane scrollPane;
    
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Mainframe mf = new Mainframe();
                    mf.initialize();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        
        JButton insertBtn = new JButton("Einfügen");
        insertBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ImageIcon icon = new ImageIcon("Stone.png");
                JLabel label = new JLabel(icon);
                box.add(Box.createRigidArea(new Dimension(0, 5)));// creates space between the JLabels
                box.add(label);
                frmOceanlife.repaint();
                frmOceanlife.revalidate();
                Rectangle bounds = label.getBounds();
                scrollPane.getViewport().scrollRectToVisible(bounds);// scroll to the new image

            }
        });

        JButton quitBtn = new JButton("Quit");
        quitBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });

        box = new Box(BoxLayout.Y_AXIS);
        JLabel piclabel = new JLabel(new ImageIcon("underwater-600x450.png"));
        box.add(piclabel);
        
        scrollPane = new JScrollPane(box);
        Dimension dim = new Dimension(box.getComponent(0).getPreferredSize());
        scrollPane.getViewport().setPreferredSize(dim);
        scrollPane.getVerticalScrollBar().setUnitIncrement(dim.height);
        scrollPane.getViewport().setBackground(Color.WHITE);

        JPanel controlPanel = new JPanel();
        controlPanel.setLayout(new FlowLayout());
        controlPanel.add(insertBtn);
        controlPanel.add(quitBtn);
        
        JLabel titleLbl = new JLabel("Welcome to Oceanlife - Your Ocean size is 600x450!", SwingConstants.CENTER);
       
        frmOceanlife = new JFrame();
        frmOceanlife.getContentPane().add(titleLbl, BorderLayout.NORTH);
        frmOceanlife.getContentPane().add(scrollPane, BorderLayout.CENTER);
        frmOceanlife.getContentPane().add(controlPanel, BorderLayout.SOUTH);
        frmOceanlife.setTitle("OceanLife");
        frmOceanlife.pack();
        frmOceanlife.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmOceanlife.setLocationRelativeTo(null);
        frmOceanlife.setVisible(true);

    }
}
-----------------------
import java.awt.*;
import javax.swing.*;

public class Mainframe {
    
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            try {
                new Mainframe();
            } catch (Exception e) {
                e.printStackTrace();
            }
        });
    }

    /**
     * Create the application.
     */
    public Mainframe() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        JFrame frmOceanlife = new JFrame();
        frmOceanlife.setTitle("OceanLife");
        //frmOceanlife.setBounds(100, 100, 750, 600);
        frmOceanlife.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //frmOceanlife.getContentPane().setLayout(null);
        frmOceanlife.setLayout(new BoxLayout(frmOceanlife.getContentPane(), BoxLayout.PAGE_AXIS));

        JButton btnNewButton_4 = new JButton("Quit");
        btnNewButton_4.addActionListener(e -> System.exit(0));
        //btnNewButton_4.setBounds(640, 6, 81, 29);
        JPanel quitPanel = new JPanel();
        quitPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
        quitPanel.add(btnNewButton_4);
        frmOceanlife.getContentPane().add(quitPanel);

        JPanel stonesPanel = new JPanel();
        frmOceanlife.getContentPane().add(stonesPanel);

        JButton btnNewButton_5 = new JButton("Insert");
        //btnNewButton_5.setBounds(410, 34, 103, 29);
        btnNewButton_5.addActionListener(e -> {
            ImageIcon icon = new ImageIcon("Stone.png");
            JLabel label = new JLabel(icon);
            //label.setBounds(25,25,50,50);
            stonesPanel.add(label);
            frmOceanlife.revalidate();
        });

        JPanel insertPanel = new JPanel();
        insertPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        insertPanel.add(btnNewButton_5);
        frmOceanlife.getContentPane().add(insertPanel);

        JPanel panel = new JPanel();
        panel.setBackground(Color.WHITE);
        //panel.setBounds(70, 75, 600, 450);
        panel.setLayout(new FlowLayout());
        panel.setPreferredSize(new Dimension(700,550));

        JLabel piclabel = new JLabel(new ImageIcon("underwater-600x450.png"));
        panel.add(piclabel);
        frmOceanlife.getContentPane().add(panel);

        JLabel lblNewLabel_2 = new JLabel("Welcome to Oceanlife - Your Ocean size is 600x450!");
        //lblNewLabel_2.setBounds(6, 539, 334, 16);
        JPanel infoPanel = new JPanel();
        infoPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        infoPanel.add(lblNewLabel_2);
        frmOceanlife.getContentPane().add(infoPanel);
        frmOceanlife.pack();
        frmOceanlife.setVisible(true);
    }
}
import java.awt.*;
import java.net.*;
import javax.swing.*;

public class Mainframe {

    private static final String STONE = "https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/32x32/Circle_Red.png",
                        OCEAN ="https://media-gadventures.global.ssl.fastly.net/media-server/dynamic/blogs/posts/robin-wu/2014/12/PB110075.jpg";
    public Mainframe() {
        initialize();
    }

    private void initialize() {
        JFrame frmOceanlife = new JFrame();
        frmOceanlife.setTitle("OceanLife");
        frmOceanlife.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmOceanlife.setLayout(new BoxLayout(frmOceanlife.getContentPane(), BoxLayout.PAGE_AXIS));

        JButton quitBtn = new JButton("Quit");
        quitBtn.addActionListener(e -> System.exit(0));
        JPanel quitPanel = new JPanel();
        quitPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
        quitPanel.add(quitBtn);
        frmOceanlife.getContentPane().add(quitPanel);

        JPanel stonesPanel = new JPanel();
        frmOceanlife.getContentPane().add(stonesPanel);

        JButton insertBtn = new JButton("Insert");
        insertBtn.addActionListener(e -> {

            try {
                ImageIcon icon = new ImageIcon(new URL(STONE));
                JLabel stoneLbl = new JLabel(icon);
                stonesPanel.add(stoneLbl);
                frmOceanlife.revalidate();
            } catch (MalformedURLException ex) {
                ex.printStackTrace();
            }
        });

        JPanel insertPanel = new JPanel();
        insertPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        insertPanel.add(insertBtn);
        frmOceanlife.getContentPane().add(insertPanel);

        JPanel oceanPanel = new JPanel();
        oceanPanel.setBackground(Color.WHITE);
        oceanPanel.setLayout(new FlowLayout());
        oceanPanel.setPreferredSize(new Dimension(700,550));

        try {
            JLabel oceanLbl = new JLabel(new ImageIcon(new URL(OCEAN)));
            oceanPanel.add(oceanLbl);
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }

        frmOceanlife.getContentPane().add(oceanPanel);

        JLabel infoLabel = new JLabel("Welcome to Oceanlife - Your Ocean size is 600x450!");
        JPanel infoPanel = new JPanel();
        infoPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        infoPanel.add(infoLabel);
        frmOceanlife.getContentPane().add(infoPanel);
        
        frmOceanlife.pack();
        frmOceanlife.setVisible(true);
    }

    public static void main(String[] args) {
       //no change in main 
    }
}
public class Mainframe {

    private static final String STONE = "https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/32x32/Circle_Red.png",
                        OCEAN ="https://media-gadventures.global.ssl.fastly.net/media-server/dynamic/blogs/posts/robin-wu/2014/12/PB110075.jpg";

    private ImageIcon oceanIcon;

    public Mainframe() {
        initialize();
    }

    private void initialize() {
        JFrame frmOceanlife = new JFrame();
        frmOceanlife.setTitle("OceanLife");
        frmOceanlife.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmOceanlife.setLayout(new BoxLayout(frmOceanlife.getContentPane(), BoxLayout.PAGE_AXIS));

        JButton quitBtn = new JButton("Quit");
        quitBtn.addActionListener(e -> System.exit(0));
        JPanel quitPanel = new JPanel();
        quitPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
        quitPanel.add(quitBtn);
        frmOceanlife.getContentPane().add(quitPanel);

        JPanel stonesPanel = new JPanel();
        JLabel stoneLbl = new JLabel();
        stonesPanel.add(stoneLbl);
        frmOceanlife.getContentPane().add(stonesPanel);

        JButton insertBtn = new JButton("Insert");

        insertBtn.addActionListener(e -> {

            try {
                ImageIcon icon = new ImageIcon(new URL(STONE));
                stoneLbl.setIcon(icon);
            } catch (MalformedURLException ex) {
                ex.printStackTrace();
            }
        });

        JPanel insertPanel = new JPanel();
        insertPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        insertPanel.add(insertBtn);
        frmOceanlife.getContentPane().add(insertPanel);

        try {
            oceanIcon = new ImageIcon(new URL(OCEAN));
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }

        JLabel oceanLbl = new JLabel();
        oceanLbl.setIcon(oceanIcon);
        JPanel oceanPanel = new JPanel(){
            @Override
            public Dimension getPreferredSize() {
                return new Dimension(oceanIcon.getIconWidth()+100, oceanIcon.getIconHeight());
            };
        };
        oceanPanel.add(oceanLbl);
        oceanPanel.setBackground(Color.WHITE);
        oceanPanel.setLayout(new GridBagLayout()); //center image in panel
        frmOceanlife.getContentPane().add(oceanPanel);

        JLabel infoLabel = new JLabel("Welcome to Oceanlife - Your Ocean size is "+oceanIcon+oceanIcon.getIconWidth()+
                "x"+oceanIcon.getIconHeight()+"!");
        JPanel infoPanel = new JPanel();
        infoPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        infoPanel.add(infoLabel);
        frmOceanlife.getContentPane().add(infoPanel);

        frmOceanlife.pack();
        frmOceanlife.setVisible(true);
    }

    public static void main(String[] args) {
      //no change in main
    }
}
-----------------------
import java.awt.*;
import javax.swing.*;

public class Mainframe {
    
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            try {
                new Mainframe();
            } catch (Exception e) {
                e.printStackTrace();
            }
        });
    }

    /**
     * Create the application.
     */
    public Mainframe() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        JFrame frmOceanlife = new JFrame();
        frmOceanlife.setTitle("OceanLife");
        //frmOceanlife.setBounds(100, 100, 750, 600);
        frmOceanlife.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //frmOceanlife.getContentPane().setLayout(null);
        frmOceanlife.setLayout(new BoxLayout(frmOceanlife.getContentPane(), BoxLayout.PAGE_AXIS));

        JButton btnNewButton_4 = new JButton("Quit");
        btnNewButton_4.addActionListener(e -> System.exit(0));
        //btnNewButton_4.setBounds(640, 6, 81, 29);
        JPanel quitPanel = new JPanel();
        quitPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
        quitPanel.add(btnNewButton_4);
        frmOceanlife.getContentPane().add(quitPanel);

        JPanel stonesPanel = new JPanel();
        frmOceanlife.getContentPane().add(stonesPanel);

        JButton btnNewButton_5 = new JButton("Insert");
        //btnNewButton_5.setBounds(410, 34, 103, 29);
        btnNewButton_5.addActionListener(e -> {
            ImageIcon icon = new ImageIcon("Stone.png");
            JLabel label = new JLabel(icon);
            //label.setBounds(25,25,50,50);
            stonesPanel.add(label);
            frmOceanlife.revalidate();
        });

        JPanel insertPanel = new JPanel();
        insertPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        insertPanel.add(btnNewButton_5);
        frmOceanlife.getContentPane().add(insertPanel);

        JPanel panel = new JPanel();
        panel.setBackground(Color.WHITE);
        //panel.setBounds(70, 75, 600, 450);
        panel.setLayout(new FlowLayout());
        panel.setPreferredSize(new Dimension(700,550));

        JLabel piclabel = new JLabel(new ImageIcon("underwater-600x450.png"));
        panel.add(piclabel);
        frmOceanlife.getContentPane().add(panel);

        JLabel lblNewLabel_2 = new JLabel("Welcome to Oceanlife - Your Ocean size is 600x450!");
        //lblNewLabel_2.setBounds(6, 539, 334, 16);
        JPanel infoPanel = new JPanel();
        infoPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        infoPanel.add(lblNewLabel_2);
        frmOceanlife.getContentPane().add(infoPanel);
        frmOceanlife.pack();
        frmOceanlife.setVisible(true);
    }
}
import java.awt.*;
import java.net.*;
import javax.swing.*;

public class Mainframe {

    private static final String STONE = "https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/32x32/Circle_Red.png",
                        OCEAN ="https://media-gadventures.global.ssl.fastly.net/media-server/dynamic/blogs/posts/robin-wu/2014/12/PB110075.jpg";
    public Mainframe() {
        initialize();
    }

    private void initialize() {
        JFrame frmOceanlife = new JFrame();
        frmOceanlife.setTitle("OceanLife");
        frmOceanlife.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmOceanlife.setLayout(new BoxLayout(frmOceanlife.getContentPane(), BoxLayout.PAGE_AXIS));

        JButton quitBtn = new JButton("Quit");
        quitBtn.addActionListener(e -> System.exit(0));
        JPanel quitPanel = new JPanel();
        quitPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
        quitPanel.add(quitBtn);
        frmOceanlife.getContentPane().add(quitPanel);

        JPanel stonesPanel = new JPanel();
        frmOceanlife.getContentPane().add(stonesPanel);

        JButton insertBtn = new JButton("Insert");
        insertBtn.addActionListener(e -> {

            try {
                ImageIcon icon = new ImageIcon(new URL(STONE));
                JLabel stoneLbl = new JLabel(icon);
                stonesPanel.add(stoneLbl);
                frmOceanlife.revalidate();
            } catch (MalformedURLException ex) {
                ex.printStackTrace();
            }
        });

        JPanel insertPanel = new JPanel();
        insertPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        insertPanel.add(insertBtn);
        frmOceanlife.getContentPane().add(insertPanel);

        JPanel oceanPanel = new JPanel();
        oceanPanel.setBackground(Color.WHITE);
        oceanPanel.setLayout(new FlowLayout());
        oceanPanel.setPreferredSize(new Dimension(700,550));

        try {
            JLabel oceanLbl = new JLabel(new ImageIcon(new URL(OCEAN)));
            oceanPanel.add(oceanLbl);
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }

        frmOceanlife.getContentPane().add(oceanPanel);

        JLabel infoLabel = new JLabel("Welcome to Oceanlife - Your Ocean size is 600x450!");
        JPanel infoPanel = new JPanel();
        infoPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        infoPanel.add(infoLabel);
        frmOceanlife.getContentPane().add(infoPanel);
        
        frmOceanlife.pack();
        frmOceanlife.setVisible(true);
    }

    public static void main(String[] args) {
       //no change in main 
    }
}
public class Mainframe {

    private static final String STONE = "https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/32x32/Circle_Red.png",
                        OCEAN ="https://media-gadventures.global.ssl.fastly.net/media-server/dynamic/blogs/posts/robin-wu/2014/12/PB110075.jpg";

    private ImageIcon oceanIcon;

    public Mainframe() {
        initialize();
    }

    private void initialize() {
        JFrame frmOceanlife = new JFrame();
        frmOceanlife.setTitle("OceanLife");
        frmOceanlife.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmOceanlife.setLayout(new BoxLayout(frmOceanlife.getContentPane(), BoxLayout.PAGE_AXIS));

        JButton quitBtn = new JButton("Quit");
        quitBtn.addActionListener(e -> System.exit(0));
        JPanel quitPanel = new JPanel();
        quitPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
        quitPanel.add(quitBtn);
        frmOceanlife.getContentPane().add(quitPanel);

        JPanel stonesPanel = new JPanel();
        JLabel stoneLbl = new JLabel();
        stonesPanel.add(stoneLbl);
        frmOceanlife.getContentPane().add(stonesPanel);

        JButton insertBtn = new JButton("Insert");

        insertBtn.addActionListener(e -> {

            try {
                ImageIcon icon = new ImageIcon(new URL(STONE));
                stoneLbl.setIcon(icon);
            } catch (MalformedURLException ex) {
                ex.printStackTrace();
            }
        });

        JPanel insertPanel = new JPanel();
        insertPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        insertPanel.add(insertBtn);
        frmOceanlife.getContentPane().add(insertPanel);

        try {
            oceanIcon = new ImageIcon(new URL(OCEAN));
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }

        JLabel oceanLbl = new JLabel();
        oceanLbl.setIcon(oceanIcon);
        JPanel oceanPanel = new JPanel(){
            @Override
            public Dimension getPreferredSize() {
                return new Dimension(oceanIcon.getIconWidth()+100, oceanIcon.getIconHeight());
            };
        };
        oceanPanel.add(oceanLbl);
        oceanPanel.setBackground(Color.WHITE);
        oceanPanel.setLayout(new GridBagLayout()); //center image in panel
        frmOceanlife.getContentPane().add(oceanPanel);

        JLabel infoLabel = new JLabel("Welcome to Oceanlife - Your Ocean size is "+oceanIcon+oceanIcon.getIconWidth()+
                "x"+oceanIcon.getIconHeight()+"!");
        JPanel infoPanel = new JPanel();
        infoPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        infoPanel.add(infoLabel);
        frmOceanlife.getContentPane().add(infoPanel);

        frmOceanlife.pack();
        frmOceanlife.setVisible(true);
    }

    public static void main(String[] args) {
      //no change in main
    }
}
-----------------------
import java.awt.*;
import javax.swing.*;

public class Mainframe {
    
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            try {
                new Mainframe();
            } catch (Exception e) {
                e.printStackTrace();
            }
        });
    }

    /**
     * Create the application.
     */
    public Mainframe() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        JFrame frmOceanlife = new JFrame();
        frmOceanlife.setTitle("OceanLife");
        //frmOceanlife.setBounds(100, 100, 750, 600);
        frmOceanlife.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //frmOceanlife.getContentPane().setLayout(null);
        frmOceanlife.setLayout(new BoxLayout(frmOceanlife.getContentPane(), BoxLayout.PAGE_AXIS));

        JButton btnNewButton_4 = new JButton("Quit");
        btnNewButton_4.addActionListener(e -> System.exit(0));
        //btnNewButton_4.setBounds(640, 6, 81, 29);
        JPanel quitPanel = new JPanel();
        quitPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
        quitPanel.add(btnNewButton_4);
        frmOceanlife.getContentPane().add(quitPanel);

        JPanel stonesPanel = new JPanel();
        frmOceanlife.getContentPane().add(stonesPanel);

        JButton btnNewButton_5 = new JButton("Insert");
        //btnNewButton_5.setBounds(410, 34, 103, 29);
        btnNewButton_5.addActionListener(e -> {
            ImageIcon icon = new ImageIcon("Stone.png");
            JLabel label = new JLabel(icon);
            //label.setBounds(25,25,50,50);
            stonesPanel.add(label);
            frmOceanlife.revalidate();
        });

        JPanel insertPanel = new JPanel();
        insertPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        insertPanel.add(btnNewButton_5);
        frmOceanlife.getContentPane().add(insertPanel);

        JPanel panel = new JPanel();
        panel.setBackground(Color.WHITE);
        //panel.setBounds(70, 75, 600, 450);
        panel.setLayout(new FlowLayout());
        panel.setPreferredSize(new Dimension(700,550));

        JLabel piclabel = new JLabel(new ImageIcon("underwater-600x450.png"));
        panel.add(piclabel);
        frmOceanlife.getContentPane().add(panel);

        JLabel lblNewLabel_2 = new JLabel("Welcome to Oceanlife - Your Ocean size is 600x450!");
        //lblNewLabel_2.setBounds(6, 539, 334, 16);
        JPanel infoPanel = new JPanel();
        infoPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        infoPanel.add(lblNewLabel_2);
        frmOceanlife.getContentPane().add(infoPanel);
        frmOceanlife.pack();
        frmOceanlife.setVisible(true);
    }
}
import java.awt.*;
import java.net.*;
import javax.swing.*;

public class Mainframe {

    private static final String STONE = "https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/32x32/Circle_Red.png",
                        OCEAN ="https://media-gadventures.global.ssl.fastly.net/media-server/dynamic/blogs/posts/robin-wu/2014/12/PB110075.jpg";
    public Mainframe() {
        initialize();
    }

    private void initialize() {
        JFrame frmOceanlife = new JFrame();
        frmOceanlife.setTitle("OceanLife");
        frmOceanlife.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmOceanlife.setLayout(new BoxLayout(frmOceanlife.getContentPane(), BoxLayout.PAGE_AXIS));

        JButton quitBtn = new JButton("Quit");
        quitBtn.addActionListener(e -> System.exit(0));
        JPanel quitPanel = new JPanel();
        quitPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
        quitPanel.add(quitBtn);
        frmOceanlife.getContentPane().add(quitPanel);

        JPanel stonesPanel = new JPanel();
        frmOceanlife.getContentPane().add(stonesPanel);

        JButton insertBtn = new JButton("Insert");
        insertBtn.addActionListener(e -> {

            try {
                ImageIcon icon = new ImageIcon(new URL(STONE));
                JLabel stoneLbl = new JLabel(icon);
                stonesPanel.add(stoneLbl);
                frmOceanlife.revalidate();
            } catch (MalformedURLException ex) {
                ex.printStackTrace();
            }
        });

        JPanel insertPanel = new JPanel();
        insertPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        insertPanel.add(insertBtn);
        frmOceanlife.getContentPane().add(insertPanel);

        JPanel oceanPanel = new JPanel();
        oceanPanel.setBackground(Color.WHITE);
        oceanPanel.setLayout(new FlowLayout());
        oceanPanel.setPreferredSize(new Dimension(700,550));

        try {
            JLabel oceanLbl = new JLabel(new ImageIcon(new URL(OCEAN)));
            oceanPanel.add(oceanLbl);
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }

        frmOceanlife.getContentPane().add(oceanPanel);

        JLabel infoLabel = new JLabel("Welcome to Oceanlife - Your Ocean size is 600x450!");
        JPanel infoPanel = new JPanel();
        infoPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        infoPanel.add(infoLabel);
        frmOceanlife.getContentPane().add(infoPanel);
        
        frmOceanlife.pack();
        frmOceanlife.setVisible(true);
    }

    public static void main(String[] args) {
       //no change in main 
    }
}
public class Mainframe {

    private static final String STONE = "https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/32x32/Circle_Red.png",
                        OCEAN ="https://media-gadventures.global.ssl.fastly.net/media-server/dynamic/blogs/posts/robin-wu/2014/12/PB110075.jpg";

    private ImageIcon oceanIcon;

    public Mainframe() {
        initialize();
    }

    private void initialize() {
        JFrame frmOceanlife = new JFrame();
        frmOceanlife.setTitle("OceanLife");
        frmOceanlife.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmOceanlife.setLayout(new BoxLayout(frmOceanlife.getContentPane(), BoxLayout.PAGE_AXIS));

        JButton quitBtn = new JButton("Quit");
        quitBtn.addActionListener(e -> System.exit(0));
        JPanel quitPanel = new JPanel();
        quitPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
        quitPanel.add(quitBtn);
        frmOceanlife.getContentPane().add(quitPanel);

        JPanel stonesPanel = new JPanel();
        JLabel stoneLbl = new JLabel();
        stonesPanel.add(stoneLbl);
        frmOceanlife.getContentPane().add(stonesPanel);

        JButton insertBtn = new JButton("Insert");

        insertBtn.addActionListener(e -> {

            try {
                ImageIcon icon = new ImageIcon(new URL(STONE));
                stoneLbl.setIcon(icon);
            } catch (MalformedURLException ex) {
                ex.printStackTrace();
            }
        });

        JPanel insertPanel = new JPanel();
        insertPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        insertPanel.add(insertBtn);
        frmOceanlife.getContentPane().add(insertPanel);

        try {
            oceanIcon = new ImageIcon(new URL(OCEAN));
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }

        JLabel oceanLbl = new JLabel();
        oceanLbl.setIcon(oceanIcon);
        JPanel oceanPanel = new JPanel(){
            @Override
            public Dimension getPreferredSize() {
                return new Dimension(oceanIcon.getIconWidth()+100, oceanIcon.getIconHeight());
            };
        };
        oceanPanel.add(oceanLbl);
        oceanPanel.setBackground(Color.WHITE);
        oceanPanel.setLayout(new GridBagLayout()); //center image in panel
        frmOceanlife.getContentPane().add(oceanPanel);

        JLabel infoLabel = new JLabel("Welcome to Oceanlife - Your Ocean size is "+oceanIcon+oceanIcon.getIconWidth()+
                "x"+oceanIcon.getIconHeight()+"!");
        JPanel infoPanel = new JPanel();
        infoPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        infoPanel.add(infoLabel);
        frmOceanlife.getContentPane().add(infoPanel);

        frmOceanlife.pack();
        frmOceanlife.setVisible(true);
    }

    public static void main(String[] args) {
      //no change in main
    }
}

Dynamic collection view cell column from different iPhone device

copy iconCopydownload iconDownload
let availableWidth = screenWidth - (padding * 2) - (minimumInterimSpacing * 2)
static func createCollectionViewFlowLayout() -> UICollectionViewFlowLayout {
        let screenWidth                     = UIScreen.main.bounds.width
        let padding: CGFloat                = 12
        let minimumInterimSpacing: CGFloat  = 10
        
        // Updated this to a var
        var availableWidth                  = screenWidth - (padding * 2) - (minimumInterimSpacing * 2)
        
        var numberOfColumn: CGFloat
        
        // 375 is iPhone SE width
        if screenWidth > 375 {
            numberOfColumn = 4
            
            // Update the width available as well
            availableWidth = screenWidth - (padding * 2) - (minimumInterimSpacing * (numberOfColumn - 1))
        } else {
            numberOfColumn = 3
        }
        
        let itemWidth                       = availableWidth / numberOfColumn
        print(numberOfColumn)
        
        let flowLayout                      = UICollectionViewFlowLayout()
        flowLayout.minimumInteritemSpacing  = minimumInterimSpacing
        flowLayout.sectionInset             = UIEdgeInsets(top: padding, left: padding, bottom: padding, right: padding)
        flowLayout.itemSize                 = CGSize(width: itemWidth, height: itemWidth)
        
        return flowLayout
}

-----------------------
let availableWidth = screenWidth - (padding * 2) - (minimumInterimSpacing * 2)
static func createCollectionViewFlowLayout() -> UICollectionViewFlowLayout {
        let screenWidth                     = UIScreen.main.bounds.width
        let padding: CGFloat                = 12
        let minimumInterimSpacing: CGFloat  = 10
        
        // Updated this to a var
        var availableWidth                  = screenWidth - (padding * 2) - (minimumInterimSpacing * 2)
        
        var numberOfColumn: CGFloat
        
        // 375 is iPhone SE width
        if screenWidth > 375 {
            numberOfColumn = 4
            
            // Update the width available as well
            availableWidth = screenWidth - (padding * 2) - (minimumInterimSpacing * (numberOfColumn - 1))
        } else {
            numberOfColumn = 3
        }
        
        let itemWidth                       = availableWidth / numberOfColumn
        print(numberOfColumn)
        
        let flowLayout                      = UICollectionViewFlowLayout()
        flowLayout.minimumInteritemSpacing  = minimumInterimSpacing
        flowLayout.sectionInset             = UIEdgeInsets(top: padding, left: padding, bottom: padding, right: padding)
        flowLayout.itemSize                 = CGSize(width: itemWidth, height: itemWidth)
        
        return flowLayout
}

Add Dynamic Plot Subtitles in Rshiny

copy iconCopydownload iconDownload
  observeEvent(filtered_data(), {
    iwalk(filtered_data(), ~ {
      subt <- pull(., new) %>%
        unique() %>%
        str_c(collapse = ",")
      subt <- paste("Unique values are:", subt)
      output[[paste0("plot_", .y)]] <<- renderPlot({
        ggplot(.x, aes(x = Sepal.Length, y = Sepal.Width)) +
          geom_point() +
          labs(title = .y, subtitle = subt, x = "Sepal Length", y = "Sepal Width") # how to make and integrate dynamic subtitles from output$text1 ?
      })
    })
  })
library(shiny)
library(shinydashboard)
library(shinyWidgets)
library(tidyverse)

species <- c("setosa", "versicolor", "virginica")
iris %>% filter(Species == "setosa")
vals1 <- rep(c("a", "b"), 25)
vals2 <- rep(c("c", "d"), 25)
vals3 <- rep(c("e", "f"), 25)
vals <- c(vals1, vals2, vals3)

iris <- iris %>%
  mutate(new = vals)

ui <- dashboardPage(
  dashboardHeader(title = "title"),
  sidebar <- dashboardSidebar(
    sidebarMenu(
      menuItem("General Overview", tabName = "tab1", icon = icon("dashboard"))
    )
  ),
  body <- dashboardBody(
    tabItems(
      tabItem(
        tabName = "tab1",
        uiOutput("species_dropdown"),
        DT::dataTableOutput("table1"),
        textOutput("text1"),
        uiOutput("plots")
      )
    )
  )
)

server <- function(input, output) {
  output$species_dropdown <- renderUI({
    pickerInput(
      "var1",
      "Species:",
      choices = species,
      options = pickerOptions(
        actionsBox = T,
        header = "Close",
        liveSearch = T
      ),
      multiple = T
    )
  })

  filtered_data <- reactive({
    map(input$var1, ~ iris %>% filter(Species == .x)) %>% set_names(input$var1)
  })

  output$plots <- renderUI({
    req(input$var1)

    plot_output_list <- lapply(input$var1, function(i) {
      plotname <- paste("plot_", i, sep = "")
      plotOutput(plotname, height = 280, width = 250)
    })

    do.call(flowLayout, plot_output_list)
  })

  observeEvent(filtered_data(), {
    iwalk(filtered_data(), ~ {
      subt <- pull(., new) %>%
        unique() %>%
        str_c(collapse = ",")
      subt <- paste("Unique values are:", subt)
      output[[paste0("plot_", .y)]] <<- renderPlot({
        ggplot(.x, aes(x = Sepal.Length, y = Sepal.Width)) +
          geom_point() +
          labs(title = .y, subtitle = subt, x = "Sepal Length", y = "Sepal Width") # how to make and integrate dynamic subtitles from output$text1 ?
      })
    })
  })

  df <- reactive({
    req(input$var1)

    iris %>%
      filter(Species == input$var1)
  })

  output$table1 <- DT::renderDataTable({
    df()
  })

  output$text1 <- renderText({
    df() %>%
      select(new) %>%
      unique() %>%
      pull()
  })
}

shinyApp(ui, server)

-----------------------
  observeEvent(filtered_data(), {
    iwalk(filtered_data(), ~ {
      subt <- pull(., new) %>%
        unique() %>%
        str_c(collapse = ",")
      subt <- paste("Unique values are:", subt)
      output[[paste0("plot_", .y)]] <<- renderPlot({
        ggplot(.x, aes(x = Sepal.Length, y = Sepal.Width)) +
          geom_point() +
          labs(title = .y, subtitle = subt, x = "Sepal Length", y = "Sepal Width") # how to make and integrate dynamic subtitles from output$text1 ?
      })
    })
  })
library(shiny)
library(shinydashboard)
library(shinyWidgets)
library(tidyverse)

species <- c("setosa", "versicolor", "virginica")
iris %>% filter(Species == "setosa")
vals1 <- rep(c("a", "b"), 25)
vals2 <- rep(c("c", "d"), 25)
vals3 <- rep(c("e", "f"), 25)
vals <- c(vals1, vals2, vals3)

iris <- iris %>%
  mutate(new = vals)

ui <- dashboardPage(
  dashboardHeader(title = "title"),
  sidebar <- dashboardSidebar(
    sidebarMenu(
      menuItem("General Overview", tabName = "tab1", icon = icon("dashboard"))
    )
  ),
  body <- dashboardBody(
    tabItems(
      tabItem(
        tabName = "tab1",
        uiOutput("species_dropdown"),
        DT::dataTableOutput("table1"),
        textOutput("text1"),
        uiOutput("plots")
      )
    )
  )
)

server <- function(input, output) {
  output$species_dropdown <- renderUI({
    pickerInput(
      "var1",
      "Species:",
      choices = species,
      options = pickerOptions(
        actionsBox = T,
        header = "Close",
        liveSearch = T
      ),
      multiple = T
    )
  })

  filtered_data <- reactive({
    map(input$var1, ~ iris %>% filter(Species == .x)) %>% set_names(input$var1)
  })

  output$plots <- renderUI({
    req(input$var1)

    plot_output_list <- lapply(input$var1, function(i) {
      plotname <- paste("plot_", i, sep = "")
      plotOutput(plotname, height = 280, width = 250)
    })

    do.call(flowLayout, plot_output_list)
  })

  observeEvent(filtered_data(), {
    iwalk(filtered_data(), ~ {
      subt <- pull(., new) %>%
        unique() %>%
        str_c(collapse = ",")
      subt <- paste("Unique values are:", subt)
      output[[paste0("plot_", .y)]] <<- renderPlot({
        ggplot(.x, aes(x = Sepal.Length, y = Sepal.Width)) +
          geom_point() +
          labs(title = .y, subtitle = subt, x = "Sepal Length", y = "Sepal Width") # how to make and integrate dynamic subtitles from output$text1 ?
      })
    })
  })

  df <- reactive({
    req(input$var1)

    iris %>%
      filter(Species == input$var1)
  })

  output$table1 <- DT::renderDataTable({
    df()
  })

  output$text1 <- renderText({
    df() %>%
      select(new) %>%
      unique() %>%
      pull()
  })
}

shinyApp(ui, server)

How do you reliably know which JTable row has been selected from multiple tables if there is only one query button?

copy iconCopydownload iconDownload
final JTextField editorComp = new JTextField();
editorComp.addFocusListener(new FocusListener() {
    @Override
    public void focusGained(FocusEvent e) {
        System.out.println("Focus gained on editor component of table " + tableNumber + '.');
    }

    @Override
    public void focusLost(FocusEvent e) {
        System.out.println("Focus lost from editor component of table " + tableNumber + '.');
    }
});
table.setDefaultEditor(Object.class, new DefaultCellEditor(editorComp));
((DefaultCellEditor) table.getDefaultEditor(Object.class)).getComponent().addFocusListener(new FocusListener() {
    @Override
    public void focusGained(FocusEvent e) {
        System.out.println("Focus gained on editor component of table " + tableNumber + '.');
    }

    @Override
    public void focusLost(FocusEvent e) {
        System.out.println("Focus lost from editor component of table " + tableNumber + '.');
    }
});
-----------------------
final JTextField editorComp = new JTextField();
editorComp.addFocusListener(new FocusListener() {
    @Override
    public void focusGained(FocusEvent e) {
        System.out.println("Focus gained on editor component of table " + tableNumber + '.');
    }

    @Override
    public void focusLost(FocusEvent e) {
        System.out.println("Focus lost from editor component of table " + tableNumber + '.');
    }
});
table.setDefaultEditor(Object.class, new DefaultCellEditor(editorComp));
((DefaultCellEditor) table.getDefaultEditor(Object.class)).getComponent().addFocusListener(new FocusListener() {
    @Override
    public void focusGained(FocusEvent e) {
        System.out.println("Focus gained on editor component of table " + tableNumber + '.');
    }

    @Override
    public void focusLost(FocusEvent e) {
        System.out.println("Focus lost from editor component of table " + tableNumber + '.');
    }
});

Enable and disable the JCheckbox (or Checkbox panel) while selecting radio button

copy iconCopydownload iconDownload
public class TestPane extends JPanel {
    private static final int NUMBER_CHECK_BOX = 10;
    JCheckBox[] checkBoxList = new JCheckBox[NUMBER_CHECK_BOX];

    ...
}
private void toggleCheckBoxesEnabled(boolean enabled) {
    for (JCheckBox box : checkBoxList) {
        box.setEnabled(enabled);
    }
}
yes.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        if (yes.isSelected()) {
            textField.setEnabled(true);
            toggleCheckBoxesEnabled(true);
        }
   }
});

no.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        if (no.isSelected()) {
            textField.setText("");
            textField.setEnabled(false);
            toggleCheckBoxesEnabled(false);
        }
    }
});
for (int i = 0; i < numberCheckBox; i++) {
    checkBoxList[i] = new JCheckBox("Diagram " + i);
    checkBoxList[i].setEnabled(false); // Add this line
    panelCheckBox.add(checkBoxList[i]);
    
    ...
}
-----------------------
public class TestPane extends JPanel {
    private static final int NUMBER_CHECK_BOX = 10;
    JCheckBox[] checkBoxList = new JCheckBox[NUMBER_CHECK_BOX];

    ...
}
private void toggleCheckBoxesEnabled(boolean enabled) {
    for (JCheckBox box : checkBoxList) {
        box.setEnabled(enabled);
    }
}
yes.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        if (yes.isSelected()) {
            textField.setEnabled(true);
            toggleCheckBoxesEnabled(true);
        }
   }
});

no.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        if (no.isSelected()) {
            textField.setText("");
            textField.setEnabled(false);
            toggleCheckBoxesEnabled(false);
        }
    }
});
for (int i = 0; i < numberCheckBox; i++) {
    checkBoxList[i] = new JCheckBox("Diagram " + i);
    checkBoxList[i].setEnabled(false); // Add this line
    panelCheckBox.add(checkBoxList[i]);
    
    ...
}
-----------------------
public class TestPane extends JPanel {
    private static final int NUMBER_CHECK_BOX = 10;
    JCheckBox[] checkBoxList = new JCheckBox[NUMBER_CHECK_BOX];

    ...
}
private void toggleCheckBoxesEnabled(boolean enabled) {
    for (JCheckBox box : checkBoxList) {
        box.setEnabled(enabled);
    }
}
yes.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        if (yes.isSelected()) {
            textField.setEnabled(true);
            toggleCheckBoxesEnabled(true);
        }
   }
});

no.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        if (no.isSelected()) {
            textField.setText("");
            textField.setEnabled(false);
            toggleCheckBoxesEnabled(false);
        }
    }
});
for (int i = 0; i < numberCheckBox; i++) {
    checkBoxList[i] = new JCheckBox("Diagram " + i);
    checkBoxList[i].setEnabled(false); // Add this line
    panelCheckBox.add(checkBoxList[i]);
    
    ...
}
-----------------------
public class TestPane extends JPanel {
    private static final int NUMBER_CHECK_BOX = 10;
    JCheckBox[] checkBoxList = new JCheckBox[NUMBER_CHECK_BOX];

    ...
}
private void toggleCheckBoxesEnabled(boolean enabled) {
    for (JCheckBox box : checkBoxList) {
        box.setEnabled(enabled);
    }
}
yes.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        if (yes.isSelected()) {
            textField.setEnabled(true);
            toggleCheckBoxesEnabled(true);
        }
   }
});

no.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        if (no.isSelected()) {
            textField.setText("");
            textField.setEnabled(false);
            toggleCheckBoxesEnabled(false);
        }
    }
});
for (int i = 0; i < numberCheckBox; i++) {
    checkBoxList[i] = new JCheckBox("Diagram " + i);
    checkBoxList[i].setEnabled(false); // Add this line
    panelCheckBox.add(checkBoxList[i]);
    
    ...
}

Community Discussions

Trending Discussions on FlowLayout
  • How to add to a JPanel from another class
  • how to enforce same label height of shiny inputs?
  • Resizing JPanel With BorderLayout
  • Java Swing Scrollpane not scrolling
  • android:exported needs to be explicitly specified for &lt;activity&gt;. Apps targeting Android 12 and higher are required to specify
  • Java Swing GridLayout Change Grid Sizes
  • Adding an image to a frame by button press
  • JSVGCanvas svg is blurry
  • Dynamic collection view cell column from different iPhone device
  • Add Dynamic Plot Subtitles in Rshiny
Trending Discussions on FlowLayout

QUESTION

How to add to a JPanel from another class

Asked 2022-Apr-17 at 03:43

I've been spending the past few hours trying to figure out how to use a panel in my GUI class from a class named algorithms. I know this question has been asked before, But I cant seem to figure out how to incorporate it into my code, so I would appreciate any form of guidance.

Specifically, in my algorithms class I was testing trying to change the JLabel named title by creating a instance of my GUI class and then trying to use title.setText(), however it returns a Null Pointer Exception.

The title JLabel is located on my JPanel named topPanel

I know I'm not doing something right, I've struggled with this for the past few hours and cant seem to make any progress. Like I said, any guidance would be appreciated.

GUI.java

import javax.swing.*;
import java.awt.*;
import java.util.Date;

public class GUI extends JFrame {
    public JFrame myFrame;
    public JPanel firstFitDisplay,topPanel;
    public JLabel title;
    public Timer timer;
    public int count=0;


    public GUI(){



    }


    public void initGUI(){


        JFrame myFrame = new JFrame();
        myFrame.setTitle("CIS 452 Dynamic Memory Allocation Project");
        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myFrame.setResizable(true);
        myFrame.setLayout(new BorderLayout(6,6));
        myFrame.setSize(1000,700);
        myFrame.setVisible(true);
        //myFrame.getContentPane().setBackground(Color.white);

        //setup panels
        JPanel infoPanel = new JPanel();
        JPanel centerPanel = new JPanel();
        JPanel topPanel = new JPanel();
        JPanel bottom = new JPanel();
        infoPanel.setBackground(Color.cyan);
        centerPanel.setBackground(Color.red);
        topPanel.setBackground(Color.yellow);
        bottom.setBackground(Color.pink);
        infoPanel.setPreferredSize(new Dimension(200,1000));
        centerPanel.setPreferredSize(new Dimension(500,500));
        topPanel.setPreferredSize(new Dimension(750,20));
        bottom.setPreferredSize(new Dimension(750,25));



        //setup layout for panels, so that we can add subpanels
        infoPanel.setLayout(new BoxLayout(infoPanel,BoxLayout.PAGE_AXIS));

        //add panels to main frame
        myFrame.add(infoPanel,BorderLayout.WEST);
        myFrame.add(centerPanel,BorderLayout.CENTER);
        myFrame.add(topPanel,BorderLayout.NORTH);
        myFrame.add(bottom,BorderLayout.SOUTH);


        // setup sub panels for infoPanel
        JPanel infoSubPanel = new JPanel();
        infoSubPanel.setBackground(Color.pink);
        infoSubPanel.setPreferredSize(new Dimension(50,90));
        infoPanel.add(infoSubPanel);
        //setting up text for infoSubPanel
        JLabel subPanelTitle = new JLabel("Next Process Size to be allocated");
        JLabel firstFitNextUpLabel = new JLabel("First:0");
        JLabel bestFitNextUpLabel = new JLabel("Best:0");
        JLabel worstFitNextUpLabel = new JLabel("Worst:0");
        infoSubPanel.add(subPanelTitle);
        infoSubPanel.add(firstFitNextUpLabel);
        infoSubPanel.add(bestFitNextUpLabel);
        infoSubPanel.add(worstFitNextUpLabel);
        //subClockPanel
        JPanel infoSubClockPanel = new JPanel();
        infoSubClockPanel.setBackground(Color.GRAY);
        infoSubClockPanel.setPreferredSize(new Dimension(50,90));
        infoPanel.add(infoSubClockPanel);

        //setting up text for sub clock panel
        JLabel clockText = new JLabel("Seconds passed: ");
        int ten = 10;
        JLabel clockCounter = new JLabel("0");
        infoSubClockPanel.add(clockText);
        infoSubClockPanel.add(clockCounter);


        //logic for running timer;
        timer = new Timer(1000, e -> {
            clockCounter.setText(String.valueOf(count++));
        });
        timer.start();

        //setting up sub panels for the main center panel
        centerPanel.setLayout(new FlowLayout());
        JPanel firstFitDisplay = new JPanel();
        JPanel bestFitDisplay = new JPanel();
        JPanel worstFitDisplay = new JPanel();
        firstFitDisplay.setPreferredSize(new Dimension(200,500));
        bestFitDisplay.setPreferredSize(new Dimension(200,500));
        worstFitDisplay.setPreferredSize(new Dimension(200,500));
        centerPanel.add(firstFitDisplay);
        centerPanel.add(bestFitDisplay);
        centerPanel.add(worstFitDisplay);
        //center components
        centerPanel.setAlignmentX(Component.CENTER_ALIGNMENT);
        firstFitDisplay.setAlignmentX(Component.CENTER_ALIGNMENT);


        //setup title
        JLabel title = new JLabel("Dynamic Memory Allocation Simulator");
        topPanel.add(title);



    }
}


and here is algorithms.java

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

public class algorithms {

    public static void main(String[] args) {
        GUI f = new GUI();
        f.initGUI();
        f.title.setText("HHHHHHHHHHH");
    }



}

ANSWER

Answered 2022-Apr-17 at 03:43

so your mistake is that you never define title in your GUI class. I think you intended to with this line:

JLabel title = new JLabel("Dynamic Memory Allocation Simulator");

This actually creates a new local variable called title instead of defining the global one. So the global variable is still null. To fix this simply change that to like to this:

this.title = new JLabel("Dynamic Memory Allocation Simulator");

Now it will define the global variable! This shouldn't give a null pointer exception now.

Source https://stackoverflow.com/questions/71899058

Community Discussions, Code Snippets contain sources that include Stack Exchange Network

Vulnerabilities

No vulnerabilities reported

Install FlowLayout

You can download it from GitHub.
You can use FlowLayout like any standard Java library. Please include the the jar files in your classpath. You can also use any IDE and you can run and debug the FlowLayout component as you would do with any other Java program. Best practice is to use a build tool that supports dependency management such as Maven or Gradle. For Maven installation, please refer maven.apache.org. For Gradle installation, please refer gradle.org .

Support

For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .

DOWNLOAD this Library from

Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
over 430 million Knowledge Items
Find more libraries
Reuse Solution Kits and Libraries Curated by Popular Use Cases

Save this library and start creating your kit

Share this Page

share link
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
over 430 million Knowledge Items
Find more libraries
Reuse Solution Kits and Libraries Curated by Popular Use Cases

Save this library and start creating your kit

  • © 2022 Open Weaver Inc.