2013-03-12 2 views
1

Пожалуйста, посмотрите на следующий кодСалфетка Смотри и Feel Ошибка

Form.java

import java.awt.event.*; 
import java.awt.*; 
import javax.swing.*; 

public class Form extends JFrame 
{ 
    private JButton[]buttonHolder; 

    public Form() 
    { 
     //Intializing instance variables 
     buttonHolder = new JButton[9]; 

     this.add(createCenterPanel()); 
     this.setSize(300,300); 
     this.setVisible(true); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

    private JPanel createCenterPanel() 
    { 
     JPanel centerPanel = new JPanel(); 
     centerPanel.setLayout(new GridLayout(3,3,0,0)); 

     for(int i=0;i<9;i++) 
     { 
      buttonHolder[i] = new JButton(); 
      centerPanel.add(buttonHolder[i]); 
     } 

     return centerPanel; 
    } 
} 

Main.java

import javax.swing.SwingUtilities; 
import javax.swing.UIManager; 
import napkin.NapkinLookAndFeel; 

public class Main 
{ 
    public static void main(String[]args) 
    { 
     try 
     { 
      Form f = new Form(); 
      UIManager.setLookAndFeel(new NapkinLookAndFeel()); 
     } 
     catch(Exception e) 
     { 

     } 
    } 
} 

Я использую салфетку внешний вид и чувствую здесь, и я получаю ошибку keys we didn't overwrite: []. Почему это? Я не получаю графический интерфейс. Пожалуйста помоги.

+0

Что делать, если вы поменять порядок этих высказываний (т.е. установите внешний вид UIManager _before_, создавая «форму», а не потом). –

+0

@IanRoberts: Это работает для отображения графического интерфейса. Но это не отвлекает сообщение. Это не исключение в любом случае –

ответ

3

Это может помочь

Одна вещь, вы можете попробовать следующий:

  • Не устанавливайте внешний вид & чувствовать себя еще.
  • Создайте свой пользовательский интерфейс.
  • Call setUndecorated (true) на кадре.
  • Установить внешний вид & почувствовать.
  • Вызов SwingUtilities.updateComponentTreeUI для рамки.
  • При необходимости вызовите setUndecorated (false) в фрейме.

От

http://www.coderanch.com/t/566070/GUI/java/Error-NapKin-Feel

EDIT:

сообщение "ключи мы не перезаписывать: []" печатается здесь:

@Override 
protected void initClassDefaults(UIDefaults table) { 
    super.initClassDefaults(table); 
    String cName = NapkinLookAndFeel.class.getName(); 
    String basicPackageName = cName.replace("NapkinLookAndFeel", "Napkin"); 
    for (String uiType : UI_TYPES) { 
     String uiClass = basicPackageName + uiType; 
     table.put(uiType, uiClass); 
    } 

    Set<Object> keys = new HashSet<Object>(table.keySet()); 
    keys.removeAll(Arrays.asList(UI_TYPES)); 
    if (keys.size() != 0) { 
     System.out.println("keys we didn't overwrite: " + keys); 
    } 
} 

http://www.jarvana.com/jarvana/view/net/sf/squirrel-sql/thirdparty-non-maven/napkinlaf/1.2/napkinlaf-1.2-sources.jar!/net/sourceforge/napkinlaf/NapkinLookAndFeel.java?format=ok

+0

нет, что не забирает сообщение –

+0

@Yohan - ваше приложение бросает какое-то исключение? Попробуйте добавить 'e.printStackTrace();' в ваш блок catch. – Pshemo

+0

@Pshemo: исключение. Графический интерфейс работает отлично. Просто интересно об этом сообщении –

0

Установите внешний вид и первый, прежде чем создать экземпляр вашего Form:

public static void main(String[]args) 
{ 
    try 
    { 
     UIManager.setLookAndFeel(new NapkinLookAndFeel()); 
     Form f = new Form(); 
    } 
    catch(Exception e) 
    { 
     // it's generally a bad idea to silently swallow exceptions, 
     // you should at least do... 
     e.printStackTrace(); 
    } 
} 
Смежные вопросы