Hello everybody,
I am still learning java at this point, but I seem to have surpassed the 3 java books I own.
I have an issue here that I am confident that most of you can answer.
I am attempting to change the icon of a button in a internalframe when pressed. The code below shows the text of a button changing (but only the last iframe is being changed, not the active iframe). By answering this question I will understand how to interact with internal frames.
Here is a stripped down version of the code:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.OverlayLayout;
import javax.swing.ScrollPaneConstants;
import javax.swing.UIManager;
import javax.swing.event.InternalFrameEvent;
import javax.swing.event.InternalFrameListener;
public class TestFrameButton extends JDesktopPane{
private static final long serialVersionUID = 1L;
JDesktopPane desk;
JDesktopPane ifdesk;
JScrollPane scrollpane;
JInternalFrame iframe;
JFrame frame;
JList jList1;
JInternalFrame currentframe;
Integer currentframenumber;
String currentframename;
Boolean[] downuptracker;
Integer deskwidth = 1000;
Integer deskheight = 1000;
Integer scrollwidth = 1000;
Integer scrollheight = 1000;
JButton DownUpButton;
public static void main(String[] args) {
TestFrameButton d = new TestFrameButton();
}
public TestFrameButton(){
downuptracker = new Boolean [99];
frame = new JFrame("Test Frame Button");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
scrollpane = new JScrollPane(desk,
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollpane.setPreferredSize(new java.awt.Dimension(scrollwidth, scrollheight));
desk = new JDesktopPane();
desk.setPreferredSize(new java.awt.Dimension(deskwidth, deskheight));
int i = 5;
for (int j = 0; j <= i; j++){
UIManager.getDefaults().put("InternalFrame.icon", "");
iframe = new JInternalFrame("Internal Frame: " + j, false, true, false, false);
iframe.setName(String.valueOf(j));
iframe.setBounds(30*j, 30*j,265 , 80);
iframe.addInternalFrameListener(new InternalFrameListener(){
public void internalFrameClosing(InternalFrameEvent e) {
}
public void internalFrameClosed(InternalFrameEvent e) {
}
public void internalFrameOpened(InternalFrameEvent e) {
}
public void internalFrameIconified(InternalFrameEvent e) {
}
public void internalFrameDeiconified(InternalFrameEvent e) {
}
public void internalFrameActivated(InternalFrameEvent e) {
currentframe = e.getInternalFrame();
currentframename = e.getInternalFrame().getName();
currentframenumber = Integer.valueOf(currentframename);
}
public void internalFrameDeactivated(InternalFrameEvent e) {
}
});
iframe.setTitle("Internal Frame :" + j);
iframe.setVisible(true);
downuptracker[j] = true;
ifdesk = new JDesktopPane();
iframe.getContentPane().add(ifdesk, BorderLayout.CENTER);
DownUpButton = new JButton("Old Icon here");
ifdesk.add(DownUpButton);
DownUpButton.setBounds(0, 0, 130, 20);
DownUpButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (downuptracker[currentframenumber].equals(true)){
// Colapse frame here and change icon
DownUpButton.setText("New Icon here");
downuptracker[currentframenumber] = false;
}else{
// Expand frame here and change icon
DownUpButton.setText("Old Icon here");
downuptracker[currentframenumber] = true;
}
}
});
desk.add(iframe);
iframe.moveToFront();
}
scrollpane.setViewportView(desk);
frame.add(scrollpane);
scrollpane.setVisible(true);
frame.setSize(800,600);
frame.setVisible(true);
}
}
Thank you in advance.