Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swing JButton is not rendering properly on Solaris with Java 8

I've connected to Solaris 11 from my windows machine. I've set DISPLAY to my machine. And I'm using Java 8.

Note: This worked fine when using Java 6.

When I'm launching dialog then its button and other swing components are not getting rendered.

Observed that it works on o Windows 7 Enterprise o Windows Server 2012 Enterprise

I tried changing the L&F but that didn't work. When I used "GTKLookAndFeel" then buttons appeared but without text/label.

Any help is greatly appreciated. Kindly let me know if any elaboration needed. Thanks.

Code for my dialog is as follows

package com.ui;


import javax.swing.SwingUtilities;


public class SimpleDialog extends java.awt.Dialog {
    private static final long serialVersionUID = -8298472889742780386L;
    public SimpleDialog(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        btnSkip = new javax.swing.JButton();
        btnRetry = new javax.swing.JButton();
        btnAbort = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        lblMessage = new javax.swing.JTextArea();
        btnViewLog = new javax.swing.JButton();

        setLocationRelativeTo(null);
        setMinimumSize(new java.awt.Dimension(600, 200));
        setModalityType(java.awt.Dialog.ModalityType.APPLICATION_MODAL);
        setName("Form"); // NOI18N
        setResizable(false);
        setTitle("Simple Dialog");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                closeDialog(evt);
            }
        });

        btnSkip.setText("Skip this Step"); // NOI18N
        btnSkip.setName("btnSkip"); // NOI18N
        btnSkip.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSkip_Click(evt);
            }
        });

        btnRetry.setText("Retry"); // NOI18N
        btnRetry.setName("btnRetry"); // NOI18N
        btnRetry.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnRetry_Click(evt);
            }
        });

        btnAbort.setText("Abort"); // NOI18N
        btnAbort.setName("btnAbort"); // NOI18N
        btnAbort.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAbort_Click(evt);
            }
        });

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        lblMessage.setColumns(20);
        lblMessage.setEditable(false); // NOI18N
        lblMessage.setLineWrap(true);
        lblMessage.setRows(5);
        lblMessage.setName("lblMessage"); // NOI18N
        jScrollPane1.setViewportView(lblMessage);

        btnViewLog.setText("View log"); // NOI18N
        btnViewLog.setName("btnViewLog"); // NOI18N
        btnViewLog.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                // open some log file
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 580, Short.MAX_VALUE)
                                .addGroup(layout.createSequentialGroup()
                                        .addComponent(btnSkip)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(btnRetry)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 87, Short.MAX_VALUE)
                                        .addComponent(btnViewLog)
                                        .addGap(79, 79, 79)
                                        .addComponent(btnAbort)))
                                        .addContainerGap())
                );
        layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(btnSkip)
                                .addComponent(btnAbort)
                                .addComponent(btnRetry)
                                .addComponent(btnViewLog))
                                .addContainerGap())
                );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    /** Closes the dialog */
    private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
        setVisible(false);
        dispose();
    }//GEN-LAST:event_closeDialog

    private void btnAbort_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAbort_Click
        this.setVisible(false);
    }//GEN-LAST:event_btnAbort_Click

    private void btnRetry_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRetry_Click
        this.setVisible(false);
    }//GEN-LAST:event_btnRetry_Click

    private void btnSkip_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSkip_Click
        this.setVisible(false);
    }//GEN-LAST:event_btnSkip_Click

    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {

                SimpleDialog dialog = new SimpleDialog(new java.awt.Frame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAbort;
    private javax.swing.JButton btnRetry;
    private javax.swing.JButton btnSkip;
    private javax.swing.JButton btnViewLog;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea lblMessage;
    // End of variables declaration//GEN-END:variables

}
like image 587
Rahul Winner Avatar asked Aug 04 '15 10:08

Rahul Winner


1 Answers

To apply look and feel you need to provide two commands:

UIManager.setLookAndFeel(lnf_name);
SwingUtilities.updateComponentTreeUI(root_obj_or_specific_one);

I had a similar problem and 2nd line solved the problem.

like image 142
shaILU Avatar answered Nov 15 '22 01:11

shaILU