Как сделать окно похожим на это в Java?

Как создать окно, которое выглядит так в Java:

frame

Я хочу, чтобы макет окна вместо стандартных границ окон, и я не знаю, как это называется.

Edit: look and feel не работает для меня:

not working for me

5 ответов


если вы хотите, чтобы ваш взгляд и чувство, чтобы нарисовать оформление окна (это то, что называется" граница"), то вам нужно позвонить JFrame.setDefaultLookAndFeelDecorated(true) до создавая свои JFrame объекты и JDialog.setDefaultLookAndFeelDecorated(true) до создавая свои JDialog объекты.


Это называется взгляд и чувство, вы можете найти подробное объяснение здесь http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html


вам нужно будет сначала установить внешний вид, чтобы использовать кросс-платформенный внешний вид (как кто-то прокомментировал, прежде чем он называется металлом). Затем, прежде чем создать рамку, вам нужно запросить, чтобы границы были нарисованы внешним видом.

try
{
    UIManager.setLookAndFeel(
        UIManager.getCrossPlatformLookAndFeelClassName());
}
catch (Exception e) { }

это установит внешний вид на тот, который вы хотите. Поскольку кросс-платформа выглядит и чувствует себя металлом в Sun's JRE.

// Get window decorations drawn by the look and feel.
JFrame.setDefaultLookAndFeelDecorated(true);

// Create the JFrame.
JFrame frame = new JFrame("A window");

и это сделает созданный JFrame иметь границы, как вы описываете.


чтобы установить Windows look and feel для swing, напишите следующий код в main методе.

public static void main (String args []) {
попробуйте {

         for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("windows".equalsIgnoreCase(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }

    } catch (Exception ex) {
         System.out.println(e);
    } 


    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            MainFrame mainFrame = new MainFrame();
            mainFrame.setExtendedState(MAXIMIZED_BOTH);
            mainFrame.setVisible(true);

            InitDatabaseDialog initDatabaseDialog = new InitDatabaseDialog(mainFrame, true);
            initDatabaseDialog.setVisible(true); 
        }
    });
}

добавьте в метод main ():

try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Windows".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(testjframe.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(testjframe.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(testjframe.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(testjframe.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }