<Swing Dev> Autosize dialog pack() seems to be buggy on Linux

helpcrypto helpcrypto helpcrypto at gmail.com
Wed Oct 29 13:46:04 UTC 2014


Review ID: JI-9016178) - [IcedTea]Autosize dialog pack() seems to be buggy
on Linux

Done ;)

On Thu, Oct 30, 2014 at 1:15 AM, Alexander Scherbatiy <
alexandr.scherbatiy at oracle.com> wrote:

> On 10/29/2014 3:22 PM, helpcrypto helpcrypto wrote:
>
>> AFAICT it only happens on icedtea
>>
>> Do you want me to report it at oracle anyway?
>>
>
>      Yes. You can start the summary with the [IcedTea] prefix.
>
>     Thanks,
>     Alexandr.
>
>>
>> Regards.
>>
>>
>> On Wed, Oct 29, 2014 at 10:33 PM, Alexander Scherbatiy <
>> alexandr.scherbatiy at oracle.com <mailto:alexandr.scherbatiy at oracle.com>>
>> wrote:
>>
>>
>>       Hi,
>>
>>       Could you create an issue on it: http://bugreport.java.com/
>> bugreport
>>
>>       Thanks,
>>       Alexandr.
>>
>>     On 10/27/2014 5:06 PM, helpcrypto helpcrypto wrote:
>>
>>         Hi.
>>
>>
>>         I'm usually at icedtea web maillist, but this bug seems to be
>>         100% swing-related.
>>
>>         I'm trying to display a dialog, centered on screen, which size
>>         is fitted to changing contents.
>>         AFAIK, this should be done using pack().
>>
>>
>>         Running the "attached testcase", I have noticed two things:
>>
>>          - After each pack, as the BorderLayoutseem to be
>>         center-resized, the window moves down after each click (but
>>         pack always seem to work). IMHO this is not a friendly
>>         behaviour, but can be solved adding a
>>         setLocationRelativeToafter pack
>>          - If I add a setLocationRelativeTo(as shown below) pack fails
>>         from time to time and incorrectly sizes the dialog.
>>
>>         Can you guys help me?
>>         Registered this bug a few weeks ago:
>>         http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1798
>>
>>
>>             package testcase;
>>             import java.awt.BorderLayout;
>>             import java.awt.event.ActionEvent;
>>             import java.awt.event.ActionListener;
>>             import java.lang.reflect.InvocationTargetException;
>>             import java.util.logging.Level;
>>             import java.util.logging.Logger;
>>             import javax.swing.*;
>>             import javax.swing.border.EmptyBorder;
>>             public class Testcase extends JDialog {
>>             private JPanel panel;
>>             private JLabel label;
>>             private JButton foo;
>>             private JButton bar;
>>             public Testcase() {
>>                     setTitle("Test");
>>                     setModal(true);
>>                     setResizable(false);
>>                     setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
>>                     foo = new JButton();
>>                     foo.setText("foo");
>>                     foo.addActionListener(new ActionListener() {
>>                         @Override
>>             public void actionPerformed(ActionEvent e) {
>>                             foo();
>>             }
>>             });
>>             foo.setVisible(true);
>>                     bar = new JButton();
>>                     bar.setText("bar");
>>                     bar.addActionListener(new ActionListener() {
>>                         @Override
>>             public void actionPerformed(ActionEvent e) {
>>                             bar();
>>             }
>>             });
>>             bar.setVisible(true);
>>                     label = new JLabel();
>>                     label.setBorder(new EmptyBorder(10, 10, 10, 10));
>>                     label.setText("a");
>>                     panel = new JPanel();
>>                     panel.setLayout(new BorderLayout());
>>             panel.setVisible(true);
>>                     panel.setBorder(new EmptyBorder(10, 10, 10, 10));
>>                     panel.add(foo, BorderLayout.NORTH);
>>                     panel.add(label, BorderLayout.CENTER);
>>                     panel.add(bar, BorderLayout.SOUTH);
>>                     getContentPane().add(panel);
>>                     pack();
>>                     //validate();
>>             //repaint();
>>                     setLocationRelativeTo(null);
>>             }
>>             public void foo(){
>>                             label.setText("<html>"+
>>                    "foofoofoofoofoofoofoofoofoofoo
>> foofoofoofoofoofoofoofoofoofoofoofoofoofoofoo"+
>>             "<br/>"+
>>                    "foofoofoofoofoofoofoofoofoofoo
>> foofoofoofoofoofoofoofoofoofoofoofoofoofoofoo"+
>>             "<br/>"+
>>                    "foofoofoofoofoofoofoofoofoofoo
>> foofoofoofoofoofoofoofoofoofoofoofoofoofoofoo"+
>>             "<br/>"+
>>                    "foofoofoofoofoofoofoofoofoofoo
>> foofoofoofoofoofoofoofoofoofoofoofoofoofoofoo"+
>>             "<br/>"+
>>                    "foofoofoofoofoofoofoofoofoofoo
>> foofoofoofoofoofoofoofoofoofoofoofoofoofoofoo"+
>>             "</html>");
>>                             pack();
>>                             //validate();
>>             //repaint();
>>                             setLocationRelativeTo(null);
>>             }
>>             public void bar(){
>>                             label.setText("<html>bar</html>");
>>                             pack();
>>                             //validate();
>>             //repaint();
>>                             setLocationRelativeTo(null);
>>             }
>>             public static void main(String[] args) {
>>             try {
>>             SwingUtilities.invokeAndWait(new Runnable() {
>>                             @Override
>>             public void run() {
>>             JDialog test= new Testcase();
>>                                 test.setVisible(true);
>>             }
>>             });
>>             } catch (InterruptedException | InvocationTargetException
>>         ex) {
>>                                   Logger.getLogger(Testcase.
>> class.getName()).log(Level.SEVERE,
>>         null,
>>             ex);
>>             }
>>             }
>>             }
>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20141029/2bdba1e5/attachment.html>


More information about the swing-dev mailing list