-
Bug
-
Resolution: Unresolved
-
P4
-
None
-
1.3.0, 5.0
-
Fix Understood
-
x86
-
solaris_8, windows_nt
Name: ssT124754 Date: 01/31/2001
java version "1.3.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0-C)
Java HotSpot(TM) Client VM (build 1.3.0-C, mixed mode)
1. STEPS TO REPRODUCE:
A. Compile below source code
B. Run app
C. You should notice that the JTextArea within the JScrollPane is flickering.
If you enlarge the JFrame to the point the scroll bar goes away, the flicker
stops.
D. If the setWrapStyleWord(true) in the TextComp class is commented out the
flicker does not happen. But this implementation needs to break at the word
boundary.
Why is the flickering happening?
2. SOURCE CODE:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class app extends JFrame {
JTextField t_name;
GridBagLayout gridbag;
GridBagConstraints gc;
JPanel mainPropertyPanel;
JPanel settingsPropertyPanel;
private GridBagLayout gbMainPropertyPanel;
private GridBagConstraints gbcMainPropertyPanel;
private GridBagLayout gbSettingsPropertyPanel;
private GridBagConstraints gbcSettingsPropertyPanel;
public app() {
super("Flicking ScrollBar");
gridbag = new
GridBagLayout();
gc = new
GridBagConstraints();
getContentPane().setLayout(gridbag);
gc.fill = GridBagConstraints.BOTH;
gc.insets = new Insets(3,3,1,3);
gc.weightx = 1.0;
gc.weighty = 0;
gc.gridwidth = GridBagConstraints.REMAINDER;
gc.gridy = GridBagConstraints.RELATIVE;
t_name = new JTextField("Caption1");
t_name.setBorder(BorderFactory.createLineBorder(Color.black));
t_name.setFont(new Font("Dialog",Font.PLAIN,10));
gridbag.setConstraints(t_name, gc);
t_name.setHorizontalAlignment(SwingConstants.CENTER);
getContentPane().add(t_name);
gbMainPropertyPanel = new GridBagLayout();
gbcMainPropertyPanel = new GridBagConstraints();
mainPropertyPanel = new JPanel();
gc.insets = new Insets(1,
3, 1, 3);
gc.weightx = 0;
gc.weighty = 1;
gc.gridwidth =
GridBagConstraints.VERTICAL;
gc.fill =
GridBagConstraints.VERTICAL;
gc.anchor =
GridBagConstraints.WEST;
gridbag.setConstraints(mainPropertyPanel, gc);
mainPropertyPanel.setLayout(gbMainPropertyPanel);
getContentPane().add(mainPropertyPanel);
gbSettingsPropertyPanel = new GridBagLayout();
gbcSettingsPropertyPanel = new GridBagConstraints();
settingsPropertyPanel = new JPanel();
gc.insets = new Insets(1,
3, 1, 3);
gc.weightx = 0;
gc.weighty = 1;
gc.gridwidth =
GridBagConstraints.REMAINDER;
gc.fill =
GridBagConstraints.NONE;
gc.anchor =
GridBagConstraints.NORTHEAST;
gridbag.setConstraints(settingsPropertyPanel, gc);
settingsPropertyPanel.setLayout(gbSettingsPropertyPanel);
getContentPane().add(settingsPropertyPanel);
EntryObj entryObj = new EntryObj();
mainPropertyPanel.add(entryObj);
positionEntryObj(mainPropertyPanel, entryObj);
EntryObj entryObj1 = new EntryObj();
mainPropertyPanel.add(entryObj1);
positionEntryObj(mainPropertyPanel, entryObj1);
}
public void positionEntryObj(JComponent objArea, EntryObj entryObj) {
if ( objArea.equals(mainPropertyPanel) ) {
gbcMainPropertyPanel.weighty = 1;
gbcMainPropertyPanel.gridheight =
GridBagConstraints.REMAINDER;
gbcMainPropertyPanel.fill
= GridBagConstraints.BOTH;
gbcMainPropertyPanel.anchor =
GridBagConstraints.SOUTH;
gbMainPropertyPanel.setConstraints(entryObj,
gbcMainPropertyPanel);
mainPropertyPanel.revalidate();
}
else
if ( objArea.equals(settingsPropertyPanel) ) {
gbcSettingsPropertyPanel.gridwidth =
GridBagConstraints.REMAINDER;
gbcSettingsPropertyPanel.anchor =
GridBagConstraints.EAST;
gbSettingsPropertyPanel.setConstraints
(entryObj, gbcSettingsPropertyPanel);
settingsPropertyPanel.revalidate();
}
}
public static void main(String args[]){
final JFrame jFrame = new app();
jFrame.setBounds(100, 100, 300, 140);
jFrame.setVisible(true);
}
public void processWindowEvent(WindowEvent e){
if ( e.getID() == WindowEvent.WINDOW_CLOSING ){
dispose();
System.exit(0);
}
super.processWindowEvent(e);
}
}
import javax.swing.*;
class TextComp extends JTextArea {
public TextComp() {
setWrapStyleWord(true);
setLineWrap(true);
setColumns(4);
setText("this is a test. this is a test. test is test");
}
}
import javax.swing.*;
import java.awt.*;
class EntryObj extends JPanel {
private TextComp t_vocabulary;
private JTextField t_selection;
private JTextField t_hotkey;
private JScrollPane vocabularyScrollPane;
private GridBagLayout gb;
private GridBagConstraints gbc;
public EntryObj() {
gb = new GridBagLayout();
gbc = new GridBagConstraints();
setLayout(gb);
t_selection = new JTextField();
t_vocabulary = new TextComp();
vocabularyScrollPane = new JScrollPane(t_vocabulary);
gbc.weighty = 1;
gbc.gridheight = 1;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.WEST;
add(vocabularyScrollPane, gbc);
t_hotkey = new JTextField("HK");
t_hotkey.setFont(new Font("Dialog",Font.PLAIN,9));
t_hotkey.setEditable(false);
t_hotkey.setEnabled(false);
t_hotkey.setDisabledTextColor(Color.black);
t_hotkey.setHorizontalAlignment(SwingConstants.CENTER);
gbc.weighty = 0;
gbc.gridy = 1;
gbc.fill =
GridBagConstraints.BOTH;
gbc.anchor =
GridBagConstraints.WEST;
add(t_hotkey, gbc);
t_selection.setHorizontalAlignment(SwingConstants.CENTER);
t_selection.setBorder(BorderFactory.createLineBorder(Color.black));
gbc.weighty = 0;
gbc.gridy = 2;
gbc.fill =
GridBagConstraints.BOTH;
gbc.anchor =
GridBagConstraints.WEST;
add(t_selection, gbc);
validateTree();
}
}
(Review ID: 116062)
======================================================================
java version "1.3.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0-C)
Java HotSpot(TM) Client VM (build 1.3.0-C, mixed mode)
1. STEPS TO REPRODUCE:
A. Compile below source code
B. Run app
C. You should notice that the JTextArea within the JScrollPane is flickering.
If you enlarge the JFrame to the point the scroll bar goes away, the flicker
stops.
D. If the setWrapStyleWord(true) in the TextComp class is commented out the
flicker does not happen. But this implementation needs to break at the word
boundary.
Why is the flickering happening?
2. SOURCE CODE:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class app extends JFrame {
JTextField t_name;
GridBagLayout gridbag;
GridBagConstraints gc;
JPanel mainPropertyPanel;
JPanel settingsPropertyPanel;
private GridBagLayout gbMainPropertyPanel;
private GridBagConstraints gbcMainPropertyPanel;
private GridBagLayout gbSettingsPropertyPanel;
private GridBagConstraints gbcSettingsPropertyPanel;
public app() {
super("Flicking ScrollBar");
gridbag = new
GridBagLayout();
gc = new
GridBagConstraints();
getContentPane().setLayout(gridbag);
gc.fill = GridBagConstraints.BOTH;
gc.insets = new Insets(3,3,1,3);
gc.weightx = 1.0;
gc.weighty = 0;
gc.gridwidth = GridBagConstraints.REMAINDER;
gc.gridy = GridBagConstraints.RELATIVE;
t_name = new JTextField("Caption1");
t_name.setBorder(BorderFactory.createLineBorder(Color.black));
t_name.setFont(new Font("Dialog",Font.PLAIN,10));
gridbag.setConstraints(t_name, gc);
t_name.setHorizontalAlignment(SwingConstants.CENTER);
getContentPane().add(t_name);
gbMainPropertyPanel = new GridBagLayout();
gbcMainPropertyPanel = new GridBagConstraints();
mainPropertyPanel = new JPanel();
gc.insets = new Insets(1,
3, 1, 3);
gc.weightx = 0;
gc.weighty = 1;
gc.gridwidth =
GridBagConstraints.VERTICAL;
gc.fill =
GridBagConstraints.VERTICAL;
gc.anchor =
GridBagConstraints.WEST;
gridbag.setConstraints(mainPropertyPanel, gc);
mainPropertyPanel.setLayout(gbMainPropertyPanel);
getContentPane().add(mainPropertyPanel);
gbSettingsPropertyPanel = new GridBagLayout();
gbcSettingsPropertyPanel = new GridBagConstraints();
settingsPropertyPanel = new JPanel();
gc.insets = new Insets(1,
3, 1, 3);
gc.weightx = 0;
gc.weighty = 1;
gc.gridwidth =
GridBagConstraints.REMAINDER;
gc.fill =
GridBagConstraints.NONE;
gc.anchor =
GridBagConstraints.NORTHEAST;
gridbag.setConstraints(settingsPropertyPanel, gc);
settingsPropertyPanel.setLayout(gbSettingsPropertyPanel);
getContentPane().add(settingsPropertyPanel);
EntryObj entryObj = new EntryObj();
mainPropertyPanel.add(entryObj);
positionEntryObj(mainPropertyPanel, entryObj);
EntryObj entryObj1 = new EntryObj();
mainPropertyPanel.add(entryObj1);
positionEntryObj(mainPropertyPanel, entryObj1);
}
public void positionEntryObj(JComponent objArea, EntryObj entryObj) {
if ( objArea.equals(mainPropertyPanel) ) {
gbcMainPropertyPanel.weighty = 1;
gbcMainPropertyPanel.gridheight =
GridBagConstraints.REMAINDER;
gbcMainPropertyPanel.fill
= GridBagConstraints.BOTH;
gbcMainPropertyPanel.anchor =
GridBagConstraints.SOUTH;
gbMainPropertyPanel.setConstraints(entryObj,
gbcMainPropertyPanel);
mainPropertyPanel.revalidate();
}
else
if ( objArea.equals(settingsPropertyPanel) ) {
gbcSettingsPropertyPanel.gridwidth =
GridBagConstraints.REMAINDER;
gbcSettingsPropertyPanel.anchor =
GridBagConstraints.EAST;
gbSettingsPropertyPanel.setConstraints
(entryObj, gbcSettingsPropertyPanel);
settingsPropertyPanel.revalidate();
}
}
public static void main(String args[]){
final JFrame jFrame = new app();
jFrame.setBounds(100, 100, 300, 140);
jFrame.setVisible(true);
}
public void processWindowEvent(WindowEvent e){
if ( e.getID() == WindowEvent.WINDOW_CLOSING ){
dispose();
System.exit(0);
}
super.processWindowEvent(e);
}
}
import javax.swing.*;
class TextComp extends JTextArea {
public TextComp() {
setWrapStyleWord(true);
setLineWrap(true);
setColumns(4);
setText("this is a test. this is a test. test is test");
}
}
import javax.swing.*;
import java.awt.*;
class EntryObj extends JPanel {
private TextComp t_vocabulary;
private JTextField t_selection;
private JTextField t_hotkey;
private JScrollPane vocabularyScrollPane;
private GridBagLayout gb;
private GridBagConstraints gbc;
public EntryObj() {
gb = new GridBagLayout();
gbc = new GridBagConstraints();
setLayout(gb);
t_selection = new JTextField();
t_vocabulary = new TextComp();
vocabularyScrollPane = new JScrollPane(t_vocabulary);
gbc.weighty = 1;
gbc.gridheight = 1;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.WEST;
add(vocabularyScrollPane, gbc);
t_hotkey = new JTextField("HK");
t_hotkey.setFont(new Font("Dialog",Font.PLAIN,9));
t_hotkey.setEditable(false);
t_hotkey.setEnabled(false);
t_hotkey.setDisabledTextColor(Color.black);
t_hotkey.setHorizontalAlignment(SwingConstants.CENTER);
gbc.weighty = 0;
gbc.gridy = 1;
gbc.fill =
GridBagConstraints.BOTH;
gbc.anchor =
GridBagConstraints.WEST;
add(t_hotkey, gbc);
t_selection.setHorizontalAlignment(SwingConstants.CENTER);
t_selection.setBorder(BorderFactory.createLineBorder(Color.black));
gbc.weighty = 0;
gbc.gridy = 2;
gbc.fill =
GridBagConstraints.BOTH;
gbc.anchor =
GridBagConstraints.WEST;
add(t_selection, gbc);
validateTree();
}
}
(Review ID: 116062)
======================================================================
- duplicates
-
JDK-5075520 JTextPane breaks GridBagLayout
-
- Closed
-
- relates to
-
JDK-4824261 JTextArea with LineWrap=true returns incorrect minimum size
-
- Closed
-