Scrolling JTextArea Problems
Hi,
I have created a simulator based on Pattis's Karel the Robot, in Swing, which has two "logging" JTextArea's. During execution of a main method that runs the simulator the logs append new entries, and the scroll pane that they are contained within changes the viewport position so that the last entry is always shown. The caret is also adjusted so that it is located at the last appended or selected entry. However during execution I often get Null Pointer Exceptions or Array Index out Of Bounds exceptions (non-fatal) relating to the PlainView class in the JDK - and they always seem related to the refresh of dirty components. I am sure it is related to the constant scrolling of the JTextArea's but I may be wrong about that ....I was just wondering if you have any suggestions on what I can do about this or what may be the possible source.
Thanks
Master Sifo-Dyas
It seems that I have found an answer in the archived Swing forum (how did I not see it before?).
It seems that after appending a message I should use the line:
textArea.setCaretPosition(textArea.getText().length());
to move the caret to the end of the text, which updates the scrolling automatically.
I tried it and it seems to work.
Similar Messages
-
Hi,
I am having an infuriating problem with my JTextArea which hopefully someone can help me with.
On my GUI I have a JTextArea in a JScrollPane which is uneditable as it
is there purely to give the user feedback. The user presses a button
and the program happily does its thing creating datafiles and other
such things and all the while telling the user what it is up to.
The code I use to update the display is this:
public void updateText(String str)
textarea.append(string + "\n");
textarea.paintImmediately();
textarea.scrollRectToVisible(textarea.modelToView(
textarea.getDocument().getLength());
}This works fine until the text reaches the bottom of the JTextArea
because what ever the last line of text is, it gets repeated evertime
it scrolls until the program stops updating the display at which point
the text changes to what it should be. So for example, if the last text
was "This is rubbish" before it starts scrolling then the
display would look like this...
This is rubbish
This is rubbish
This is rubbish
This is rubbish....(and so on until the end where it changes to the proper text).
One thing I have noticed is that the last line in the JTextArea before
scrolling starts has about the bottom two rows of pixels missing from
the text, could this be causing the scrolling to mess up. I have tried
making the JTextArea double buffered and swapping the order of the
scrolling and the paintImmediatly.
I am really stuck and have searched through the forums trying all the
usual suggestions for scrolling such as setting the caret position but
this seems to be the only one that make the JTextArea scroll, albeit
with a messed up display.
Please can someone help me, this is really bugging me. (No pun intended).
Cheers Jim.Check this code
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
class Test extends JFrame implements ActionListener
static int nCount = 0;
JTextArea m_areaTest = null;
JButton m_btnTest = new JButton("Add");
public Test()
m_areaTest = new JTextArea(10,30);
JScrollPane scrollTest = new JScrollPane(m_areaTest);
m_areaTest.setLineWrap(true);
getContentPane().setLayout(new FlowLayout());
getContentPane().add(scrollTest);
getContentPane().add(m_btnTest);
m_btnTest.addActionListener(this);
addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent e)
dispose();
System.exit(0);
public static void main(String args[])
System.out.println("Starting CopyPaste...");
Test mainFrame = new Test();
mainFrame.setSize(400, 400);
mainFrame.setTitle("CopyPaste");
mainFrame.setVisible(true);
public void actionPerformed(ActionEvent e)
if(e.getSource() == m_btnTest)
m_areaTest.append("This is rubbish"+ nCount+ "\n");
nCount++;
//m_areaTest.paintImmediately();
//bm_areaTest.scrollRectToVisible(m_areaTest.modelToView(textarea.getDocument().getLength()));
}regards
Praveen -
Hello,
I have a problem with scrolling inside of JTextArea.
I get position by method getVisibleRect()
And then I set position by scrollRectToVisible()
But it moves me to the end of textarea.
How do I need to deal with it?Could you please tell me more about SwingUtilities.invokeLater(). How and where do I need to use it?
//from initialization
jTextArea1.setColumns(20);
jTextArea1.setEditable(false);
jTextArea1.setLineWrap(true);
jTextArea1.setRows(10);
jScrollPane1.setViewportView(jTextArea1);
//this is method is launched when "start" button is pressed
private void startTimer() {
jTextArea1.setText(SessionBean.getText());
Rectangle rect = SessionBean.getLastRect();
jScrollPane1.scrollRectToVisible(rect);
//this is method is launched when "stop" button is pressed
private void stopTimer() {
jTextArea1.setText("");
//this is how I change rectangle, executed by Timer every 5 sec
public void setLastRect() {
SessionBean.setLastRect(jTextArea1.getVisibleRect());
} -
Scrolling JTextArea to Last Line
Hi Gurus:
I have seached the forum, but didn't find a solution to this problem. It must be something really simple that I'm not getting!
I have a JTextArea with JScrollbar attached to it. My application appends output text to this text area for user information. I would like to scroll the text up, so that the last line of text is always visible in that area.
Currently, this is what I'm doing:
txtOutput.setCaretPosition(txtOutput.getText().length());where txtOutput is the JTextArea in question.
This does scroll the text up (as desired), however, it also scrolls the text leftwards to show the latest text (not desired), since that's what I asked it to do. How can I get it to scroll back to the top of the line? Or should I use some other approach?
Regards,
KamranIf I understand your problem you should be able to use the following methods from the JTextArea API:
int getLineCount() - Determines the number of lines contained in the area.
int getLineStartOffset(int line) - Determines the offset of the start of the given line.
You should be able to do something like:
caretPosition = textArea.getLineStartOffset( getLineCount() );
This should position the caret to the beginning of the last line.
BTW - JTextArea is a Swing Component. There is a whole forum devoted to Swing questions. You should post your question there - you might get an answer faster. This will also improve your searches as the search function only search the current forum you are looking at. -
JScrollPane w/ JTextArea problems
I've written a simple terminal for a project I'm working on, with a JTextField for inputs and a JTextArea to display outputs. The JTextArea uses a JScrollPane to let it scroll vertically, and wraps text to avoid horizontal scrolling.
My problem is this: when I append text to the text area, the scroll pane sometimes scrolls to the bottom, sometimes scrolls part-way, and sometimes doesn't move at all. Ideally, I'd like to have the scroll pane always pushed to the bottom. Does anyone know what causes this kind of behaviour? What input causes the bar to scroll, and what input doesn't?
thanks,
AndrewI don't know what causes the kind if behaviour you described, but this is how you get the scrollPane to scroll to the bottom:
int bottom = scrollPane.getVerticalScrollBar().getMaximum();
scrollPane.getVerticalScrollBar().setValue(bottom); -
Scroll bar problems ..Please help!!!!!!
This is what the program looks like. topPanel has newItemPanel on top of it. when you click continue newItemPanel becomes invisible and newItemDescriptionPanel becomes visible. When you click continue newItemDescriptionPanel becomes invisible and priceEnterPanel becomes visible.
I want newItemDescriptionPanel and priceEnterPanel to have a scroll bar. but everything I have tried hasn't worked. I am new. You will see the code is ugly and there is an attempt to add a scrollbar.
Please help
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.lang.System;
public class MainPanel extends JFrame implements ActionListener
private boolean firstRun = true;
private final int ITEM_PLAIN = 0; // Item types
private final int ITEM_CHECK = 1;
private final int ITEM_RADIO = 2;
private JPanel topPanel;
private JPanel newItemPanel;
private JRadioButton onlineAuctionRadio;
private JRadioButton fixedPriceRadio;
private ButtonGroup bg;
private JButton continueButton;
private JLabel blankLabel; //used to give space between things
private JPanel newItemDescriptionPanel;
private JPanel takeAdditionalSpacePanelCheckBox;
private JPanel takeAdditionalSpacePanel;
private JPanel takeAdditionalSpacePanelLabel;
private JPanel takeAdditionalSpacePanelLabel2;
private JPanel takeAdditionalSpacePanel2;
private JPanel takeAdditionalSpacePanel3;
private JPanel takeAdditionalSpacePanel4;
private JPanel takeAdditionalSpacePanel5;
JScrollPane displayScroller;
JEditorPane itemDescriptionTextArea;
GridBagLayout gridbag;
GridBagConstraints gbc;
private JCheckBox secondCategoryCheckBox;
private JLabel itemTitleLabel;
private JLabel requiredLabel, requiredLabel2;
private JLabel requiredStarLabel;
private JTextField itemTitleTextField;
private JLabel subtitleLabel;
private JTextField subtitleTextField;
private JLabel itemDescriptionLabel;
private JButton itemDescriptionContinueButton;
private JLabel percentageLabel;
//------- price enter page ----------------
private JLabel startingPriceLabel;
private JLabel dollarSignLabel;
private JTextField startingPriceTextField;
private JPanel fillUpSpacePanel;
private JPanel fillUpSpacePanel1;
private JPanel fillUpSpacePanel2;
private JLabel buyItNowLabel;
private JPanel fillUpSpacePanel3;
private JLabel dollarSignLabel2;
private JTextField buyItNowTextField;
private JPanel fillUpSpacePanel4;
private JPanel fillUpSpacePanel5;
private JPanel fillUpSpacePanel6;
private JPanel fillUpSpacePanel7;
private JPanel fillUpSpacePanel8;
private JPanel fillUpSpacePanel9;
private JPanel fillUpSpacePanel10;
private JPanel fillUpSpacePanel11;
private JPanel fillUpSpacePanel12;
private JPanel fillUpSpacePanel13;
private JPanel fillUpSpacePanel14;
private JPanel fillUpSpacePanel15;
private JPanel fillUpSpacePanel16;
private JPanel fillUpSpacePanel17;
private JPanel fillUpSpacePanel18;
private JLabel donatePercentageLabel;
private JTextField donatePercentageTextField;
private JPanel fSp; // fill space panel
private JPanel fSp1;
private JPanel fSp2;
private JPanel fSp3;
private JPanel fSp4;
private JPanel fSp5;
private JPanel fSp6;
private JPanel fSp7;
private JPanel fSp8;
private JPanel fSp9;
private JLabel numberOfPicturesLabel;
private JTextField numberOfPicturesTextField;
private JCheckBox superSizePicturesCheckBox;
private JLabel superSizePicturesLabel;
private JRadioButton standardPictureRadioButton;
private JRadioButton picturePackRadioButton;
private JCheckBox listingDesignerCheckBox;
private ButtonGroup bgPictures;
private JCheckBox valuePackCheckBox;
private JCheckBox galleryPictureCheckBox;
private JCheckBox subtitleCheckBox;
private JCheckBox boldCheckBox;
private JCheckBox borderCheckBox;
private JCheckBox highlightCheckBox;
private JCheckBox featuredPlusCheckBox;
private JCheckBox galleryFeaturedCheckBox;
private JLabel homePageFeaturedLabel;
private JComboBox homePageFeaturedComboBox;
private JCheckBox giftCheckBox;
JScrollPane priceEnterPanelScroll;
private JButton backToRadioButton;
private JButton backToItemDescriptionButton;
private JPanel priceEnterPanel;
private final static String RADIOPANEL = "JPanel with radios";
private final static String DESCRIPTIONPANEL = "JPanel with description";
private final static String PRICEENTERPANEL = "JPanel with price entering";
private JPanel cards;
private JMenuBar menuBar;
private JMenu menuFile;
private JMenu menuEdit;
private JMenu menuProperty;
private JMenuItem menuPropertySystem;
private JMenuItem menuPropertyEditor;
private JMenuItem menuPropertyDisplay;
private JMenu menuFileNew;
private JMenuItem menuFileNewAccount;
private JMenuItem menuFileNewItem;
private JMenuItem menuFileOpen;
private JMenuItem menuFileSave;
private JMenuItem menuFileSaveAs;
private JMenuItem menuFileExit;
private JMenuItem menuEditCopy;
private JMenuItem menuEditCut;
private JMenuItem menuEditPaste;
public MainPanel()
requiredLabel = new JLabel ("* Required");
requiredLabel.setForeground (Color.red);
requiredLabel2 = new JLabel ("* Required");
requiredLabel2.setForeground (Color.red);
requiredStarLabel = new JLabel ("*");
requiredStarLabel.setForeground (Color.green);
setTitle( "photo galleries" );
setSize( 310, 130 );
topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
topPanel.setBorder (BorderFactory.createTitledBorder ("TopPanel"));
//topPanel.setPreferredSize(new Dimension (300,300));
getContentPane().add( topPanel );
topPanel.setVisible (false);
// For New Item Panel
ButtonListener ears = new ButtonListener();
blankLabel = new JLabel (" "); // used to give space between radio buttons and continue button
continueButton = new JButton ("Continue >");
continueButton.addActionListener (ears);
backToRadioButton = new JButton ("< back");
backToRadioButton.addActionListener (ears);
itemDescriptionContinueButton = new JButton ("Continue >");
itemDescriptionContinueButton.addActionListener (ears);
backToItemDescriptionButton = new JButton ("< back");
backToItemDescriptionButton.addActionListener (ears);
newItemPanel = new JPanel();
newItemPanel.setLayout (new BoxLayout(newItemPanel, BoxLayout.Y_AXIS));
//topPanel.add (newItemPanel, BorderLayout.NORTH);
newItemPanel.setBorder (BorderFactory.createTitledBorder ("NewItemPanel"));
newItemPanel.setVisible (false);
onlineAuctionRadio = new JRadioButton ("Sold item at online Auction" );
fixedPriceRadio = new JRadioButton ("Sold at a Fixed Price");
bg = new ButtonGroup();
bg.add(onlineAuctionRadio);
bg.add(fixedPriceRadio);
onlineAuctionRadio.addActionListener (ears);
fixedPriceRadio.addActionListener (ears);
newItemPanel.add (onlineAuctionRadio);
newItemPanel.add (fixedPriceRadio);
newItemPanel.add (blankLabel);
newItemPanel.add (continueButton);
// ------ After continue pressed ---------
newItemDescriptionPanel = new JPanel();
newItemDescriptionPanel.setLayout (new BoxLayout(newItemDescriptionPanel, BoxLayout.Y_AXIS));
newItemPanel.add (newItemDescriptionPanel, BorderLayout.NORTH);
newItemDescriptionPanel.setBorder (BorderFactory.createTitledBorder ("newItemDescriptionPanel"));
secondCategoryCheckBox = new JCheckBox ("The item was listed in a second category");
newItemDescriptionPanel.setVisible (false);
itemTitleLabel = new JLabel ("Item title");
itemTitleTextField = new JTextField (30);
subtitleLabel = new JLabel ("Subtitle ($0.50)");
subtitleTextField = new JTextField (30);
itemDescriptionLabel = new JLabel ("Item description");
itemDescriptionTextArea = new JEditorPane();
itemDescriptionTextArea.setContentType( "text/html" );
itemDescriptionTextArea.setEditable( false );
itemDescriptionTextArea.setPreferredSize(new Dimension (500,250));
itemDescriptionTextArea.setFont(new Font( "Serif", Font.PLAIN, 12 ));
itemDescriptionTextArea.setForeground( Color.black );
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 4;
displayScroller = new JScrollPane( itemDescriptionTextArea );
gridbag = new GridBagLayout ();
gridbag.setConstraints( displayScroller, gbc );
itemDescriptionTextArea.setEditable( true );
takeAdditionalSpacePanelCheckBox = new JPanel(new FlowLayout(FlowLayout.LEFT));
takeAdditionalSpacePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));//<--added, to take additional space
takeAdditionalSpacePanelLabel = new JPanel(new FlowLayout(FlowLayout.LEFT));//<--added, to take additional space
takeAdditionalSpacePanelLabel2 = new JPanel(new FlowLayout(FlowLayout.LEFT));//<--added, to take additional space
takeAdditionalSpacePanel2 = new JPanel(new FlowLayout(FlowLayout.LEFT));//<--added, to take additional space
takeAdditionalSpacePanel3 = new JPanel(new FlowLayout(FlowLayout.LEFT));//<--added, to take additional space
takeAdditionalSpacePanel4 = new JPanel(new FlowLayout(FlowLayout.LEFT));
takeAdditionalSpacePanel5 = new JPanel(new FlowLayout(FlowLayout.LEFT));
//takeAdditionalSpacePanel2.setBorder (BorderFactory.createTitledBorder ("Additonal 2"));
takeAdditionalSpacePanelCheckBox.add (secondCategoryCheckBox);
newItemDescriptionPanel.add (takeAdditionalSpacePanelCheckBox);
//newItemDescriptionPanel.add (blankLabel);
takeAdditionalSpacePanelLabel.add (itemTitleLabel);
takeAdditionalSpacePanelLabel.add (requiredLabel);
newItemDescriptionPanel.add (takeAdditionalSpacePanelLabel);
//newItemDescriptionPanel.add (itemTitleTextField);
takeAdditionalSpacePanel.add(itemTitleTextField);//<--add textfield to panel
newItemDescriptionPanel.add (takeAdditionalSpacePanel);//<--add panel to boxlayout panel
takeAdditionalSpacePanelLabel2.add (subtitleLabel);
newItemDescriptionPanel.add (takeAdditionalSpacePanelLabel2);
takeAdditionalSpacePanel2.add (subtitleTextField);
newItemDescriptionPanel.add (takeAdditionalSpacePanel2);
takeAdditionalSpacePanel4.add (itemDescriptionLabel);
//takeAdditionalSpacePanel4.add (requiredLabel2);
newItemDescriptionPanel.add (takeAdditionalSpacePanel4);
takeAdditionalSpacePanel3.add (displayScroller);
newItemDescriptionPanel.add (takeAdditionalSpacePanel3);
takeAdditionalSpacePanel5.add (backToRadioButton);
takeAdditionalSpacePanel5.add (itemDescriptionContinueButton);
newItemDescriptionPanel.add (takeAdditionalSpacePanel5);
//newItemDescriptionPanel.setLayout (new BoxLayout(newItemDescriptionPanel, BoxLayout.Y_AXIS));
//----------- Price Enter Page ----------------
priceEnterPanel = new JPanel();
priceEnterPanel.setLayout (new BoxLayout(priceEnterPanel, BoxLayout.Y_AXIS));
newItemDescriptionPanel.add (priceEnterPanel, BorderLayout.NORTH);
priceEnterPanel.setBorder (BorderFactory.createTitledBorder ("Price enter Panel"));
priceEnterPanel.setVisible (false);
priceEnterPanelScroll = new JScrollPane (priceEnterPanel);
topPanel.add (priceEnterPanelScroll);
standardPictureRadioButton = new JRadioButton ("Standard");
picturePackRadioButton = new JRadioButton ("Picture Pack ($1.00 for up to 6 pictures or $1.50 for 7 to 12 pictures)");
bgPictures = new ButtonGroup();
bgPictures.add(standardPictureRadioButton);
bgPictures.add(picturePackRadioButton);
standardPictureRadioButton.addActionListener (ears);
picturePackRadioButton.addActionListener (ears);
superSizePicturesCheckBox = new JCheckBox ("Supersize Pictures ($0.75)");
listingDesignerCheckBox = new JCheckBox ("Listing designer $0.10");
valuePackCheckBox = new JCheckBox ("Get the Essentials for less! Gallery, Subtitle, Listing Designer. $0.65 (save $0.30)");
superSizePicturesCheckBox.setEnabled (false);
superSizePicturesCheckBox.addActionListener (ears);
listingDesignerCheckBox.addActionListener (ears);
valuePackCheckBox.addActionListener (ears);
startingPriceLabel = new JLabel ("Starting Price");
dollarSignLabel = new JLabel ("$");
startingPriceTextField = new JTextField (10);
buyItNowLabel = new JLabel ("Buy It Now");
dollarSignLabel2 = new JLabel ("$");
buyItNowTextField = new JTextField (10);
donatePercentageLabel = new JLabel ("Donate percentage of sale");
donatePercentageTextField = new JTextField (2);
donatePercentageTextField.setText ("0");
percentageLabel = new JLabel ("%");
// Right-justify the text
donatePercentageTextField.setHorizontalAlignment(JTextField.RIGHT);
numberOfPicturesLabel = new JLabel ("Number of pictures used");
numberOfPicturesTextField = new JTextField (1);
numberOfPicturesTextField.setText ("0");
galleryPictureCheckBox = new JCheckBox ("Gallery ($0.35) [Requires a picture]");
subtitleCheckBox = new JCheckBox ("Subtitle ($0.50)");
boldCheckBox = new JCheckBox ("Bold ($1.00)");
borderCheckBox = new JCheckBox ("Border ($3.00)");
highlightCheckBox = new JCheckBox ("Highlight ($5.00)");
featuredPlusCheckBox = new JCheckBox ("Featured Plus! ($19.95)");
galleryFeaturedCheckBox = new JCheckBox ("Gallery Featured ($19.95) [Requires a picture]");
homePageFeaturedLabel = new JLabel ("Home Page Featured ($39.95 for 1 item, $79.95 for 2 or more items)");
homePageFeaturedComboBox = new JComboBox ();
homePageFeaturedComboBox.addItem (("None..."));
homePageFeaturedComboBox.addItem (("1 item"));
homePageFeaturedComboBox.addItem (("2 or more items"));
giftCheckBox = new JCheckBox ("Show as a gift ($0.25)");
fillUpSpacePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel4 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel5 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel6 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel7 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel8 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel9 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel10 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel11 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel12 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel13 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel14 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel15 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel16 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel17 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel18 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp4 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp5 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp6 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp7 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp8 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp9 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel.add (startingPriceLabel);
fillUpSpacePanel.add (requiredLabel2);
priceEnterPanel.add (fillUpSpacePanel);
fillUpSpacePanel2.add (dollarSignLabel);
fillUpSpacePanel2.add (startingPriceTextField);
priceEnterPanel.add (fillUpSpacePanel2);
// fillUpSpacePanel1.add (backToItemDescriptionButton);
// priceEnterPanel.add (fillUpSpacePanel1);
fillUpSpacePanel3.add (buyItNowLabel);
priceEnterPanel.add (fillUpSpacePanel3);
fillUpSpacePanel4.add (dollarSignLabel2);
fillUpSpacePanel4.add (buyItNowTextField);
priceEnterPanel.add (fillUpSpacePanel4);
fillUpSpacePanel1.add (donatePercentageLabel);
priceEnterPanel.add (fillUpSpacePanel1);
fillUpSpacePanel5.add (donatePercentageTextField);
fillUpSpacePanel5.add (percentageLabel);
priceEnterPanel.add (fillUpSpacePanel5);
fillUpSpacePanel6.add (numberOfPicturesLabel);
priceEnterPanel.add (fillUpSpacePanel6);
fillUpSpacePanel7.add (numberOfPicturesTextField);
priceEnterPanel.add (fillUpSpacePanel7);
fillUpSpacePanel8.add (standardPictureRadioButton);
priceEnterPanel.add (fillUpSpacePanel8);
fillUpSpacePanel10.add (blankLabel);
fillUpSpacePanel10.add (superSizePicturesCheckBox);
priceEnterPanel.add (fillUpSpacePanel10);
fillUpSpacePanel9.add (picturePackRadioButton);
priceEnterPanel.add (fillUpSpacePanel10);
fillUpSpacePanel11.add (picturePackRadioButton);
priceEnterPanel.add (fillUpSpacePanel11);
fillUpSpacePanel12.add (listingDesignerCheckBox);
priceEnterPanel.add (fillUpSpacePanel12);
fillUpSpacePanel13.add (valuePackCheckBox);
priceEnterPanel.add (fillUpSpacePanel13);
fSp.add (galleryPictureCheckBox);
priceEnterPanel.add (fSp);
fSp1.add (subtitleCheckBox);
priceEnterPanel.add (fSp1);
fSp2.add (boldCheckBox);
priceEnterPanel.add (fSp2);
fSp3.add (borderCheckBox);
priceEnterPanel.add (fSp3);
fSp4.add (highlightCheckBox);
priceEnterPanel.add (fSp4);
fSp5.add (featuredPlusCheckBox);
priceEnterPanel.add (fSp5);
fSp6.add (galleryFeaturedCheckBox);
priceEnterPanel.add (fSp6);
fSp7.add (homePageFeaturedLabel);
priceEnterPanel.add (fSp7);
fSp8.add (homePageFeaturedComboBox);
priceEnterPanel.add (fSp8);
fSp9.add (giftCheckBox);
priceEnterPanel.add (fSp9);
newItemDescriptionPanel.add (priceEnterPanelScroll);
//Create the panel that contains the "cards".
cards = new JPanel(new CardLayout());
cards.add(newItemPanel, RADIOPANEL);
cards.add(newItemDescriptionPanel, DESCRIPTIONPANEL);
cards.add(priceEnterPanel, PRICEENTERPANEL);
topPanel.add(cards, BorderLayout.NORTH);
// Create the menu bar
menuBar = new JMenuBar();
// Set this instance as the application's menu bar
setJMenuBar( menuBar );
// Build the property sub-menu
menuProperty = new JMenu( "Properties" );
menuProperty.setMnemonic( 'P' );
// Create property items
menuPropertySystem = CreateMenuItem( menuProperty, ITEM_PLAIN,
"System...", null, 'S', null );
menuPropertyEditor = CreateMenuItem( menuProperty, ITEM_PLAIN,
"Editor...", null, 'E', null );
menuPropertyDisplay = CreateMenuItem( menuProperty, ITEM_PLAIN,
"Display...", null, 'D', null );
//Build the File-New sub-menu
menuFileNew = new JMenu ("New");
menuFileNew.setMnemonic ('N');
//Create File-New items
menuFileNewItem = CreateMenuItem( menuFileNew, ITEM_PLAIN,
"Item", null, 'A', null );
menuFileNewAccount = CreateMenuItem( menuFileNew, ITEM_PLAIN,
"Account", null, 'A', null );
// Create the file menu
menuFile = new JMenu( "File" );
menuFile.setMnemonic( 'F' );
menuBar.add( menuFile );
//Add the File-New menu
menuFile.add( menuFileNew );
// Create the file menu
// Build a file menu items
menuFileOpen = CreateMenuItem( menuFile, ITEM_PLAIN, "Open...",
new ImageIcon( "open.gif" ), 'O',
"Open a new file" );
menuFileSave = CreateMenuItem( menuFile, ITEM_PLAIN, "Save",
new ImageIcon( "save.gif" ), 'S',
" Save this file" );
menuFileSaveAs = CreateMenuItem( menuFile, ITEM_PLAIN,
"Save As...", null, 'A',
"Save this data to a new file" );
// Add the property menu
menuFile.addSeparator();
menuFile.add( menuProperty );
menuFile.addSeparator();
menuFileExit = CreateMenuItem( menuFile, ITEM_PLAIN,
"Exit", null, 'X',
"Exit the program" );
//menuFileExit.addActionListener(this);
// Create the file menu
menuEdit = new JMenu( "Edit" );
menuEdit.setMnemonic( 'E' );
menuBar.add( menuEdit );
// Create edit menu options
menuEditCut = CreateMenuItem( menuEdit, ITEM_PLAIN,
"Cut", null, 'T',
"Cut data to the clipboard" );
menuEditCopy = CreateMenuItem( menuEdit, ITEM_PLAIN,
"Copy", null, 'C',
"Copy data to the clipboard" );
menuEditPaste = CreateMenuItem( menuEdit, ITEM_PLAIN,
"Paste", null, 'P',
"Paste data from the clipboard" );
public JMenuItem CreateMenuItem( JMenu menu, int iType, String sText,
ImageIcon image, int acceleratorKey,
String sToolTip )
// Create the item
JMenuItem menuItem;
switch( iType )
case ITEM_RADIO:
menuItem = new JRadioButtonMenuItem();
break;
case ITEM_CHECK:
menuItem = new JCheckBoxMenuItem();
break;
default:
menuItem = new JMenuItem();
break;
// Add the item test
menuItem.setText( sText );
// Add the optional icon
if( image != null )
menuItem.setIcon( image );
// Add the accelerator key
if( acceleratorKey > 0 )
menuItem.setMnemonic( acceleratorKey );
// Add the optional tool tip text
if( sToolTip != null )
menuItem.setToolTipText( sToolTip );
// Add an action handler to this menu item
menuItem.addActionListener( this );
menu.add( menuItem );
return menuItem;
public void actionPerformed( ActionEvent event )
CardLayout cl = (CardLayout)(cards.getLayout());
if (event.getSource() == menuFileExit)
System.exit(0);
if (event.getSource() == menuFileNewAccount)
System.out.println ("hlkadflkajfalkdjfalksfj");
if (event.getSource() == menuFileNewItem){
if (firstRun){
newItemPanel.setVisible (true);
topPanel.setVisible (true);
cl.show(cards,RADIOPANEL);
firstRun = false;
//System.out.println( event );
private class ButtonListener implements ActionListener
public void actionPerformed(ActionEvent event)
CardLayout cl = (CardLayout)(cards.getLayout());
// cl.show(cards, (String)evt.getItem());
if (event.getSource() == continueButton){
if (!(onlineAuctionRadio.isSelected()) && !(fixedPriceRadio.isSelected()))
JOptionPane.showMessageDialog(null, "You must select at least one.", "Error", JOptionPane.ERROR_MESSAGE);
else{
if (onlineAuctionRadio.isSelected()){
cl.show (cards, DESCRIPTIONPANEL);
//newItemPanel.setVisible (false);
//newItemDescriptionPanel.setVisible (true);
if (event.getSource() == itemDescriptionContinueButton){
if (itemTitleTextField.getText().trim().equalsIgnoreCase(""))
JOptionPane.showMessageDialog(null, "You must enter a title.", "Error", JOptionPane.ERROR_MESSAGE);
else
cl.show (cards, PRICEENTERPANEL);
if (event.getSource() == backToRadioButton){
cl.show (cards, RADIOPANEL);
if (event.getSource() == backToItemDescriptionButton){
cl.show(cards, DESCRIPTIONPANEL);
if (standardPictureRadioButton.isSelected()){
superSizePicturesCheckBox.setEnabled (true);
if (picturePackRadioButton.isSelected()){
superSizePicturesCheckBox.setEnabled (false);
} //end of action performed
}Mostly I see there is about 100 times as much code as I care to look at.
So you don't know how to get a panel in a scroll pane, and then get that scroll pane into your GUI? Then try doing that by itself, not encumbered with 10000 lines of irrelevant code. Once you have it working, plug it into the big lump of code. Or if you can't get it working, ask about the small problem here. -
Mighty Mouse scroll ball problems
I wondered if anyone could help me with a scrolling issue with the mighty mouse. Some days scrolling works vertically up and down and other times just one direction. I dont believe it is due to dirt in the mouse - it seems software related and is sporadic in its operation. Any advise you could give would be welcome
Thanks
NickDP, that is what worked best for me in the past.
After months of problems with the scrolling ball, and after trying all the suggestions found on the web, this method of using a white sheet of paper was an excellent one: my MM was again clean and working as if it was new!
However, be careful about it: don't push too much when running the MM upside down. Eventually, yes, the gunk will come out, but the ball would go down-inside the case if pressed too hard for too long. It happened to me when using this method for a second time, and I was in the need to disassemble the device in order to correct this, and I think that's exactly what I was trying to avoid in the first place.
Hope it helps.
JJ -
Mighty Mouse scroll ball problem
I have had this Mighty Mouse for about a year and a half and the only problem has been the scroll ball. Every once in a while it won't scroll down. I was told to hold it upside down and rub the ball good with a wool cloth. Basically every time it did the trick. Now it won't scroll down anymore (it scrolls everywhere else though). Is there something broken inside? Is there anyway to take it apart? Not being able to scroll down is quite annoying and I'd love to be able to do it again.
Scrolling down, the ball moves but doesn't make the little clicking like sound like it does in any other direction. Any advice?Hi. Sometimes using a clear spirit such as denatured alcohol (or vodka...) instead of the water suggested here
http://docs.info.apple.com/article.html?artnum=302417
helps - but I've had one that wouldn't be fixed, and was replaced. Good Luck. -
JTabel Horizontal scroll bar problem
Hi,
I want a horizontal scroll bar added to my table
hence I do this
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
but the problem is If I increase the size of frame
the cells do not resize hence there is a gap after
the last column.
How do I remove this gapPlease reduce the container size in the screen thru SE51 that automatically create the scroll
or check whether in the attributes of the screen "Hold scroll positio" not to be checked
a® -
Horizontal Scroll bar problem with CL_GUI_ALV_GRID
Hi Experts,
I have created Dynamic ALV by using CL_GUI_ALV_GRID . Everthing is working fine if all the data is displaying in single screen. But if the number of columns increase with the output of data the horizontal scroll bar is not working.
It is visible but when I click to scroll it to the end of screen it is not working. Can anybody help me that what can be the problem?Please reduce the container size in the screen thru SE51 that automatically create the scroll
or check whether in the attributes of the screen "Hold scroll positio" not to be checked
a® -
Horizontal scroll bar problem in Portal????
Hi Guys,
I am facing some problem when i open any thread. Horizontal scrollong bar is coming at the end of the thread.
eg: If i have some text in the thread which is more than width of the screen and has some 10 replies to that thread, Then i should be able to scrool at that position itself. But now i have to scroll down till end of all the replies and then i have to scroll the horizontal bar to right/left and scroll up to particular reply to see what is there.
Is there any enhancement going on in portal or it is specific to my system? Please do let me know.
Thanks,
Vinod.I too am facing this problem with the horizontal scroll bar.
There are many other bugs, but I am reluctant to spend my time reporting them as last time I reported a problem here, I got a rude response.
Al Lal -
Scroll Bar Problem after Printing a web page containing multiple page data
Hi All,
I have a web application which has two DIV, one is main and one is child. I am having problem in printing multiple pages. There is a lot of data in the child DIV and i am using JavaScript functions to control the print functionality. When i print using window.print(), only the data on the main page currently being showed is printed. I further researched and checked out the Style.Overflow property.
Now i am using divMain.style.overflow = "visible"
After this the complete print comes. But in Firefox, the scroll bar disappears and only single page is left with no scroll bar .
Now if after print i give divMain.style.overflow = "Auto" OR divMain.style.overflow = "Scroll", still the scroll bar doesn't come and if it comes then its inactive. I am unable to see the complete data on the page after the print is taken.
The problem is not coming in I.E and the full data with scroll bar is recovered in I.E.
Please help me how to get the normal page with full data and scroll bar after printing in Firefox.
Thanks,
Manujhi, i would update my reader first to the newest version.
does the size of the textfield never change, independant how much text is in it?
perhaps check your subforms, if they are type "position" size does not change in my opinion, except your parent subforms expand to fit....
or use "flowed" subforms...and regard the parent subforms too! -
Creating a 1 page scrolling site - problems with the final section scrolling too far
I have created a 1 page scrolling site that works fine apart from the final section, which scrolls too far. My site is made up of a pinned headr, a pinned footer, and 4 sections (defined by rectangles - each one 1011 pixels high). I have used scroll effects to bring the items in and out.
The site can be viewed here: Home
The problem is with the contact us section, where you seem to be able to scroll further than the bottom section.
These are my document set up settings:
so my height is set to 4042 (though I have tried it with 4044 - 4x1011 - it makes no difference. When I click on the link to the contact section it looks fine, but I then seem to be able to scroll further down, and this seems dependant on the monitor / browser size. The problem is more pronounced with a smaller monitor / browser size in height.
I have tried everything I can think of to make it not scroll beyond what the anchor takes it to when I click on the link, but whatever I do the problem seems to persist.
I would welcome any suggestions on this, and also any general feedback on the site. But help with the problem first please.
Many Thanks in advance - I would be happy to post the muse file but cannot seem to find a way to do this.
IanThanks for the help. Is there a way that I can upload the file for someone to look at - I have tried your suggestion but cannot find any empty text boxes or anything at the bottom. I have gone top right and tried the upload file section but it tells me that I am not allowed the create the content.
Actually i'll put it in dropbox and share it that way.
Dropbox - YESS2.muse
Hopefully someone with more knowledge than me can see what I have done wrong - it is my first time doing a 1 page scrolling site so it might be a school boy error
Cheers
Ian -
Set Font to the JTextArea Problem
Hi all, i've got a problem in setting the font for my JTextArea.
Here is my piece of code.
Display.append(Message.getText());
Display.setFont(selected_font));
Display is JTextArea, Message is String.
The problem is i whenever i do this, everytime i change the Font of the Message, the whole messages in the Display font also change.
What i want is, when i change the font of certain message, that certain message font ( instead of all message) also change in the Display.
I know the problem is because of the Display.setFont(), it set the font for the whole content inside the Display. Any help to fulfill what i want?I'm not sure a JTextArea is appropriate for what you're doing. As its API documentation begins by saying "A JTextArea is a multi-line area that displays plain text. "
You can set the font used by this component: but the point is that it uses a single font.
Perhaps you are looking for a JEditorPane (including JTextPane). Check out Sun's tutorial for code examples etc: http://java.sun.com/docs/books/tutorial/uiswing/components/text.html -
InputVerifier for JTextArea problem
Hello,
I am having a problem with using an InputVerifier to check a max character limit on a JTextArea. It seems that occasionally after the verify of the JTextArea fails, I lose the next character I type into it! Here is the code, followed by a description of how to reproduce the problem. Note this code is copied from the Java 1.4.2 API documentation of the InputVerifier class, with the first JTextField changed to a JTextArea and the verify method modified:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.InputVerifier;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class TestJTextArea extends JFrame {
public TestJTextArea () {
JTextArea ta = new JTextArea ("");
ta.setPreferredSize(new Dimension(100, 50));
getContentPane().add (ta, BorderLayout.NORTH);
ta.setInputVerifier(new PassVerifier());
JTextField tf2 = new JTextField ("TextField2");
getContentPane().add (tf2, BorderLayout.SOUTH);
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
addWindowListener(l);
class PassVerifier extends InputVerifier {
public boolean verify(JComponent input) {
JTextArea jText = (JTextArea)input;
boolean retValue = jText.getText().length() < 5;
if (!retValue) {
System.out.println("MAX CHARS");
return retValue;
public static void main(String[] args) {
Frame f = new TestJTextArea ();
f.pack();
f.setVisible(true);
}A way to reproduce the problem is type in the TextArea: "123455", then Ctrl+Tab and the verify will fail. Then backspace twice to delete the "55" and Ctrl+Tab to move to the TextField. Then Tab again to go back to the TextArea and type any charachter over than 5. About 80% of the time, the character that you type will be lost and not appear in the TextArea. It doesn't always happen, but if you try it a few times it will come up. Also, occasionally the backspace keystroke is also lost in the TextArea. Note this only happens when I use Tab. I am not able to reproduce it by using the mouse to change focus.
I have searched for a bug report on this, but have found nothing. Am I doing something wrong? I am simply using the sample code from the InputVerifier JavaDoc, but with a JTextArea... This is on a WinXP Pro machine with Java Std. Ed. 1.4.2.
Thank you for your help.
AngelJTextField jtf = (JTextField)comboBox.getEditor().getEditorComponent();
jtf.setInputVerifier(new YourInputVerifier());
Maybe you are looking for
-
Text message sent to me everytime i connect to my ...
Hi, May be some one can solve this one for me, everytime i connect to my car bluetooth i get a text message buisiness card from a friend of mine that he may have sent to me at some point. This happens every time i connect - i can also make it happen
-
Do I need to abandon Thunderbird because too slow.
I have been using Thunderbird for many years under Windows XP Professional. There were no problems and there was a quick response from the programme. My bank forced me to abandon Window XP. I choose for Windows 8., which I installed on my old compute
-
Apple Wireless Mighty Mouse internal speaker not working !!!
Recently I bought an used Wireless Mighty Mouse (first version with grey side buttons), the mouse is working perfectly minus the single little detail that I can not hear any clicking sound from the internal tiny speaker inside the mouse when I use th
-
Problem in curve 9320 after software update
Hi, i had updated my curve 9320 with new software as recommended by blackberry desktop software. After the update i am facing many issues after software update: 1. whenever I am trying to make a call or opening any message my phone power suddenly goe
-
Distributed Software Systems & Serialization
Can someone please explain why the ability to be able to serialise an object and then de-serialise it, has such a vital role in the building of Java based distributed software systems. Many thanks