Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Swing bug? cannot set width of JToggleButton

843805Dec 1 2006 — edited Dec 3 2006
Hello,
Just wondered if this was a Swing bug. See also
bug 6349010.
The width of the JToggleButton cannot be set.
However the height can be set.
The important line is line 135 - and also 140.
Try changing the width of the button - it does not change.
thanks,
Anil

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.util.EventObject;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JToggleButton;
import javax.swing.JTree;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellEditor;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeSelectionModel;

public class TreeUIFailed extends JPanel {
	  AnilTreeCellRenderer3 atcr;
	  AnilTreeCellEditor4 atce;
	  DefaultTreeModel treeModel;
	  JTree tree;
	  DefaultMutableTreeNode markedNode = null;
	  
	public TreeUIFailed() {
		  super(new BorderLayout());
			treeModel = new DefaultTreeModel(null);
			tree = new JTree(treeModel);		
		    tree.setEditable(true);
			tree.getSelectionModel().setSelectionMode(
					TreeSelectionModel.SINGLE_TREE_SELECTION);
			tree.setShowsRootHandles(true);
		    tree.setCellRenderer(atcr = new AnilTreeCellRenderer3());
		    tree.setCellEditor(atce = new AnilTreeCellEditor4(tree, atcr));
		    tree.setRowHeight(0);//TEMP - needed only if setting Win L&F
			JScrollPane scrollPane = new JScrollPane(tree);
			add(scrollPane,BorderLayout.CENTER);
	}
	public void setRootNode(DefaultMutableTreeNode node) {
		treeModel.setRoot(node);
		treeModel.reload();
	}
	  public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException{
//		  UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		  TreeUIFailed tb = new TreeUIFailed();
		  tb.setPreferredSize(new Dimension(800,600));
		    JFrame frame = new JFrame("Tree Windows UI Failed");
		    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		    frame.setContentPane(tb);
		    frame.setSize(800, 600);
		    frame.pack();
		    frame.setVisible(true);
		    tb.populate();
	  }

	private void populate() {
		TextAreaNode3 r = new TextAreaNode3(this);
		 setRootNode(r);
			r.gNode.notes.addTab("0", null/* icon */, new JTextArea(2,25),
			"no menu!");
			r.gNode.notes.addTab("1", null/* icon */, new JTextArea(2,25),
			"no menu!");
			TextAreaNode3 a = new TextAreaNode3(this);
			a.gNode.notes.addTab("1", null/* icon */, new JTextArea(2,25),
			"no menu!");
		 treeModel.insertNodeInto(a, r, r.getChildCount());		
	}
}

class AnilTreeCellRenderer3 extends DefaultTreeCellRenderer{
	TreeUIFailed panel;
 DefaultMutableTreeNode currentNode;
 
  public AnilTreeCellRenderer3() {
	super();
}

public Component getTreeCellRendererComponent
   (JTree tree, Object value, boolean selected, boolean expanded,
   boolean leaf, int row, boolean hasFocus){
	TextAreaNode3 currentNode = (TextAreaNode3)value;
	NodeGUI4 gNode = (NodeGUI4) currentNode.gNode;
    return gNode.vBox;
  }
}
 
class AnilTreeCellEditor4 extends DefaultTreeCellEditor{
  DefaultTreeCellRenderer rend;
 
  public AnilTreeCellEditor4(JTree tree, DefaultTreeCellRenderer r){
    super(tree, r);
    rend = r;
  }
 
  public Component getTreeCellEditorComponent(JTree tree, Object value,
   boolean isSelected, boolean expanded, boolean leaf, int row){
    return rend.getTreeCellRendererComponent(tree, value, isSelected, expanded,
     leaf, row, true);
  }
 
  public boolean isCellEditable(EventObject event){
    return true;
  }
}
/**
 * this is done to keep gui separate from model - as in MVC.
 * not necessary.
 * @author juwo
 *
 */
class NodeGUI4 {
	JPanel notesPanel = new JPanel(new BorderLayout(), true);
	JTabbedPane notes = new JTabbedPane(JTabbedPane.RIGHT);
	final TreeUIFailed view;
	Box vBox = Box.createVerticalBox();
	Box hBox = Box.createHorizontalBox();
	final JTextArea textArea = new JTextArea( 1, 5 );
	JToggleButton toggleButton = new JToggleButton();

	NodeGUI4( TreeUIFailed view_ ) {
		this.view = view_;
		toggleButton.setAlignmentX(Component.CENTER_ALIGNMENT);
// BEGIN PROBLEM		
		toggleButton.setPreferredSize(new Dimension(200,toggleButton.getPreferredSize().height));
// END PROBLEM
		vBox.add(toggleButton);
		vBox.add(hBox);
		hBox.add( textArea );
		textArea.setBorder( BorderFactory.createMatteBorder( 0, 0, 1, 0, Color.GREEN ) );
		notesPanel.add(notes);
		hBox.add( notesPanel);
		hBox.setBorder( BorderFactory.createMatteBorder( 5, 5, 5, 5, Color.CYAN ) );

// THE FOLLOWING DOES NOT WORK EITHER!!!		
		//		halo.setPreferredSize(new Dimension(vBox.getPreferredSize().width,halo.getPreferredSize().height));
	}
}

class TextAreaNode3 extends DefaultMutableTreeNode {   
	NodeGUI4 gNode;
	TextAreaNode3(TreeUIFailed view_t) {	
		gNode = new NodeGUI4(view_t);		
	}
}

Comments

Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Dec 30 2006
Added on Dec 1 2006
4 comments
1,097 views