aspose file tools*
The moose likes Swing / AWT / SWT and the fly likes SwingSet2 popup menu items are wrong when Look & Feel  is changed Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "SwingSet2 popup menu items are wrong when Look & Feel  is changed" Watch "SwingSet2 popup menu items are wrong when Look & Feel  is changed" New topic
Author

SwingSet2 popup menu items are wrong when Look & Feel is changed

Rajesh Honnappanavar
Greenhorn

Joined: Nov 06, 2003
Posts: 2
Hi All
i am wokring on SwingSet2 of Java 1.3.1.
Problem Description:
In JInternalFrame demo, few internal frames are minimized in Windows Look and feel/Default(metal ie Java) look and feel.
Then L&F is changed to Motif. Now if I leftt click on the minimized internalpanes, a popupmenu appears.
In that, the 'minimize' option is enabled while other options including 'restore' options are disabled.
However, selecting 'minimize' option performed 'restore' action. ie minimize should not be enabled when Internal frmaes are minimized.
this problem occurs if i minimize some frames in Java look&feel, then change L&F to Motif , now if i click on the minimized frames , minimize option on popupmenu is highlighted when frames are being minimized.

Result:
The items are wrongly displayed in the popup.
Expected Result:
Changing L&F should not result in this erroneous behaviour.
Minimize should not be highlighted when frames r being minimized.

Source Code :


import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.border.*;
import javax.swing.colorchooser.*;
import javax.swing.filechooser.*;
import javax.accessibility.*;

import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.util.*;
import java.io.*;
import java.applet.*;
import java.net.*;


public class InternalFrameDemo extends DemoModule {
int windowCount = 0;
JDesktopPane desktop = null;

ImageIcon icon1, icon2, icon3, icon4;
ImageIcon smIcon1, smIcon2, smIcon3, smIcon4;

public Integer FIRST_FRAME_LAYER = new Integer(1);
public Integer DEMO_FRAME_LAYER = new Integer(2);
public Integer PALETTE_LAYER = new Integer(3);

public int FRAME0_X = 15;
public int FRAME0_Y = 280;

public int FRAME0_WIDTH = 320;
public int FRAME0_HEIGHT = 230;

public int FRAME_WIDTH = 225;
public int FRAME_HEIGHT = 150;

public int PALETTE_X = 375;
public int PALETTE_Y = 20;

public int PALETTE_WIDTH = 260;
public int PALETTE_HEIGHT = 230;

JCheckBox windowResizable = null;
JCheckBox windowClosable = null;
JCheckBox windowIconifiable = null;
JCheckBox windowMaximizable = null;

JTextField windowTitleField = null;
JLabel windowTitleLabel = null;


/**
* main method allows us to run as a standalone demo.
*/
public static void main(String[] args) {
InternalFrameDemo demo = new InternalFrameDemo(null);
demo.mainImpl();
}

/**
* InternalFrameDemo Constructor
*/
public InternalFrameDemo(SwingSet2 swingset) {
super(swingset, "InternalFrameDemo", "toolbar/JDesktop.gif");

// preload all the icons we need for this demo
icon1 = createImageIcon("ImageClub/misc/fish.gif", getString("InternalFrameDemo.fish"));
icon2 = createImageIcon("ImageClub/misc/moon.gif", getString("InternalFrameDemo.moon"));
icon3 = createImageIcon("ImageClub/misc/sun.gif", getString("InternalFrameDemo.sun"));
icon4 = createImageIcon("ImageClub/misc/cab.gif", getString("InternalFrameDemo.cab"));

smIcon1 = createImageIcon("ImageClub/misc/fish_small.gif", getString("InternalFrameDemo.fish"));
smIcon2 = createImageIcon("ImageClub/misc/moon_small.gif", getString("InternalFrameDemo.moon"));
smIcon3 = createImageIcon("ImageClub/misc/sun_small.gif", getString("InternalFrameDemo.sun"));
smIcon4 = createImageIcon("ImageClub/misc/cab_small.gif", getString("InternalFrameDemo.cab"));

// Create the desktop pane
desktop = new JDesktopPane();
getDemoPanel().add(desktop, BorderLayout.CENTER);

// Create the "frame maker" palette
createInternalFramePalette();

// Create an initial internal frame to show
JInternalFrame frame1 = createInternalFrame(icon1, FIRST_FRAME_LAYER, 1, 1);
frame1.setBounds(FRAME0_X, FRAME0_Y, FRAME0_WIDTH, FRAME0_HEIGHT);

// Create four more starter windows
createInternalFrame(icon1, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT);
createInternalFrame(icon3, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT);
createInternalFrame(icon4, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT);
createInternalFrame(icon2, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT);
}



/**
* Create an internal frame and add a scrollable imageicon to it
*/
public JInternalFrame createInternalFrame(Icon icon, Integer layer, int width, int height) {
JInternalFrame jif = new JInternalFrame();

if(!windowTitleField.getText().equals(getString("InternalFrameDemo.frame_label"))) {
jif.setTitle(windowTitleField.getText() + " ");
} else {
jif = new JInternalFrame(getString("InternalFrameDemo.frame_label") + " " + windowCount + " ");
}

// set properties
jif.setClosable(windowClosable.isSelected());
jif.setMaximizable(windowMaximizable.isSelected());
jif.setIconifiable(windowIconifiable.isSelected());
jif.setResizable(windowResizable.isSelected());
jif.getAccessibleContext().setAccessibleName(jif.getTitle());

jif.setBounds(20*(windowCount%10), 20*(windowCount%10), width, height);
jif.setContentPane(new ImageScroller(this, icon, 0, windowCount));

windowCount++;

desktop.add(jif, layer);

// Set this internal frame to be selected

try {
jif.setSelected(true);
} catch (java.beans.PropertyVetoException e2) {
}

jif.show();

return jif;
}

public JInternalFrame createInternalFramePalette() {
JInternalFrame palette = new JInternalFrame(
getString("InternalFrameDemo.palette_label")
);
palette.putClientProperty("JInternalFrame.isPalette", Boolean.TRUE);
palette.getContentPane().setLayout(new BorderLayout());
palette.setBounds(PALETTE_X, PALETTE_Y, PALETTE_WIDTH, PALETTE_HEIGHT);
palette.setResizable(true);
palette.setIconifiable(true);
desktop.add(palette, PALETTE_LAYER);

// *************************************
// * Create create frame maker buttons *
// *************************************
JButton b1 = new JButton(smIcon1);
b1.getAccessibleContext().setAccessibleName(smIcon1.getDescription());
JButton b2 = new JButton(smIcon2);
b2.getAccessibleContext().setAccessibleName(smIcon2.getDescription());
JButton b3 = new JButton(smIcon3);
b3.getAccessibleContext().setAccessibleName(smIcon3.getDescription());
JButton b4 = new JButton(smIcon4);
b4.getAccessibleContext().setAccessibleName(smIcon4.getDescription());

// add frame maker actions
b1.addActionListener(new ShowFrameAction(this, icon1));
b2.addActionListener(new ShowFrameAction(this, icon2));
b3.addActionListener(new ShowFrameAction(this, icon3));
b4.addActionListener(new ShowFrameAction(this, icon4));

// add frame maker buttons to panel
JPanel p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));

JPanel buttons1 = new JPanel();
buttons1.setLayout(new BoxLayout(buttons1, BoxLayout.X_AXIS));

JPanel buttons2 = new JPanel();
buttons2.setLayout(new BoxLayout(buttons2, BoxLayout.X_AXIS));

buttons1.add(b1);
buttons1.add(Box.createRigidArea(HGAP15));
buttons1.add(b2);

buttons2.add(b3);
buttons2.add(Box.createRigidArea(HGAP15));
buttons2.add(b4);

p.add(Box.createRigidArea(VGAP10));
p.add(buttons1);
p.add(Box.createRigidArea(VGAP15));
p.add(buttons2);
p.add(Box.createRigidArea(VGAP10));

palette.getContentPane().add(p, BorderLayout.NORTH);

// ************************************
// * Create frame property checkboxes *
// ************************************
p = new JPanel() {
Insets insets = new Insets(10,15,10,5);
public Insets getInsets() {
return insets;
}
};
p.setLayout(new GridLayout(2,2));


windowResizable = new JCheckBox(getString("InternalFrameDemo.resizable_label"), true);
windowClosable = new JCheckBox(getString("InternalFrameDemo.closable_label"), true);
windowIconifiable = new JCheckBox(getString("InternalFrameDemo.iconifiable_label"), true);
windowMaximizable = new JCheckBox(getString("InternalFrameDemo.maximizable_label"), true);

p.add(windowResizable);
p.add(windowClosable);
p.add(windowIconifiable);
p.add(windowMaximizable);

palette.getContentPane().add(p, BorderLayout.CENTER);


// ************************************
// * Create Frame title textfield *
// ************************************
p = new JPanel() {
Insets insets = new Insets(0,0,10,0);
public Insets getInsets() {
return insets;
}
};

windowTitleField = new JTextField(getString("InternalFrameDemo.frame_label"));
windowTitleLabel = new JLabel(getString("InternalFrameDemo.title_text_field_label"));

p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
p.add(Box.createRigidArea(HGAP5));
p.add(windowTitleLabel, BorderLayout.WEST);
p.add(Box.createRigidArea(HGAP5));
p.add(windowTitleField, BorderLayout.CENTER);
p.add(Box.createRigidArea(HGAP5));

palette.getContentPane().add(p, BorderLayout.SOUTH);

palette.show();

return palette;
}


class ShowFrameAction extends AbstractAction {
InternalFrameDemo demo;
Icon icon;


public ShowFrameAction(InternalFrameDemo demo, Icon icon) {
this.demo = demo;
this.icon = icon;
}

public void actionPerformed(ActionEvent e) {
demo.createInternalFrame(icon,
getDemoFrameLayer(),
getFrameWidth(),
getFrameHeight()
);
}
}

public int getFrameWidth() {
return FRAME_WIDTH;
}

public int getFrameHeight() {
return FRAME_HEIGHT;
}

public Integer getDemoFrameLayer() {
return DEMO_FRAME_LAYER;
}

class ImageScroller extends JScrollPane {

public ImageScroller(InternalFrameDemo demo, Icon icon, int layer, int count) {
super();
JPanel p = new JPanel();
p.setBackground(Color.white);
p.setLayout(new BorderLayout() );

p.add(new JLabel(icon), BorderLayout.CENTER);

getViewport().add(p);
}

public Dimension getMinimumSize() {
return new Dimension(25, 25);
}

}


}
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: SwingSet2 popup menu items are wrong when Look & Feel is changed