2012-07-15 35 views
1

我有一个类延伸JPanel,我想嵌入到JFrame。 L & F设置为Nimbus,我用于面板的布局是GridBagLayoutJTextArea上Nimbus跨不同机器


当我把JAR的朋友,一个JTextArea我打算为日志控制台使用开始演戏了,也不会留我将它的大小。

textAreaLog.setMinimumSize(new Dimension(295, 48));

我使用的WinXP SP2和我的朋友使用的Win7 64位。下面是它的外观我的电脑(左)和他的PC(右)上的图片:

Image

很显然,我想要它是我有我的机器上的方式。


下面是相关的代码(几乎用于面板全班同学):

package com.sassilization.mapfix.gui; 

// Imports the package with the inner-workings of the application 
import com.sassilization.mapfix.MapFixGenerator; 

import java.awt.*; 
import java.awt.event.*; 

import javax.swing.*; 

public class LogPanel extends JPanel { 
    private static final long serialVersionUID = 8324191587703173738L; 

    /* 
    * Constructor 
    */ 
    public LogPanel() { 
     setPreferredSize(new Dimension(350, 70)); 
     // Creates a default Nimbus border 
     setBorder(BorderFactory.createTitledBorder((String) null)); 
     setOpaque(false); 

     setLayout(new GridBagLayout()); 
     // Calls the method which initializes all the components 
     initComponents(); 
    } 

    /* 
    * Component declarations 
    */ 
    private JButton buttonFgd; 
    private JButton buttonHelp; 
    private JButton buttonLogCopy; 
    private JButton buttonLogDown; 
    private JButton buttonLogUp; 
    private JTextArea textAreaLog; 
    private JToggleButton toggleButtonAppend; 

    /* 
    * Initializes and adds all the components to the panel 
    */ 
    private void initComponents() { 
     // The constraints used to lay out the components in a GBL 
     GridBagConstraints gbc = new GridBagConstraints(); 

     // The brick button 
     toggleButtonAppend = new JToggleButton(appendIcons[0]); 
     toggleButtonAppend.setBorder(BorderFactory.createEmptyBorder()); 
     toggleButtonAppend.setToolTipText("Turn append mode on"); 
     toggleButtonAppend.addItemListener(new ItemListener() { 
      public void itemStateChanged(ItemEvent event) { 
       buttonAppendItemStateChanged(event); 
      } 
     }); 
     add(toggleButtonAppend, gbc); 

     // The question mark button 
     buttonHelp = new JButton(new ImageIcon(getClass().getResource("resources/help.png"))); 
     buttonHelp.setBorder(BorderFactory.createEmptyBorder()); 
     buttonHelp.setToolTipText("Open help"); 
     buttonHelp.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent event) { 
       // buttonHelpActionPerformed(event); 
      } 
     }); 
     gbc.gridy = 1; 
     add(buttonHelp, gbc); 

     // The white page button 
     buttonFgd = new JButton(new ImageIcon(getClass().getResource("resources/page_white_put.png"))); 
     buttonFgd.setBorder(BorderFactory.createEmptyBorder()); 
     buttonFgd.setToolTipText("Extract FGD file"); 
     buttonFgd.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent event) { 
       // buttonFgdActionPerformed(event); 
      } 
     }); 
     gbc.gridy = 2; 
     add(buttonFgd, gbc); 

     // The problematic JTextArea 
     textAreaLog = new JTextArea(); 
     textAreaLog.setMinimumSize(new Dimension(295, 48)); 
     textAreaLog.setBorder(BorderFactory.createMatteBorder(0, 12, 0, 0, 
       new ImageIcon(getClass().getResource("resources/border.png")))); 
     textAreaLog.setBackground(new Color(0, 0, 0, 0)); 
     textAreaLog.setForeground(new Color(171, 193, 207)); 
     textAreaLog.setFont(new Font(null, Font.PLAIN, 9)); 
     textAreaLog.setLineWrap(true); 
     textAreaLog.setWrapStyleWord(true); 
     textAreaLog.setEditable(false); 
     gbc.gridx = 1; 
     gbc.gridy = 0; 
     gbc.gridheight = 3; 
     add(textAreaLog, gbc); 

     // The up arrow button 
     buttonLogUp = new JButton(new ImageIcon(getClass().getResource("resources/bullet_arrow_up.png"))); 
     buttonLogUp.setBorder(BorderFactory.createEmptyBorder()); 
     buttonLogUp.setContentAreaFilled(false); 
     buttonLogUp.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent event) { 
       // buttonLogUpActionPerformed(event); 
      } 
     }); 
     gbc.gridx = 2; 
     gbc.gridheight = 1; 
     add(buttonLogUp, gbc); 

     // The floppy disk button 
     buttonLogCopy = new JButton(new ImageIcon(getClass().getResource("resources/bullet_disk.png"))); 
     buttonLogCopy.setBorder(BorderFactory.createEmptyBorder()); 
     buttonLogCopy.setContentAreaFilled(false); 
     buttonLogCopy.setToolTipText("Copy log to clipboard"); 
     buttonLogCopy.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent event) { 
       // buttonLogCopyActionPerformed(event); 
      } 
     }); 
     gbc.gridy = 1; 
     add(buttonLogCopy, gbc); 

     // The down arrow button 
     buttonLogDown = new JButton(new ImageIcon(getClass().getResource("resources/bullet_arrow_down.png"))); 
     buttonLogDown.setBorder(BorderFactory.createEmptyBorder()); 
     buttonLogDown.setContentAreaFilled(false); 
     buttonLogDown.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent event) { 
       // buttonLogDownActionPerformed(event); 
      } 
     }); 
     gbc.gridy = 2; 
     add(buttonLogDown, gbc); 
    } 

    private ImageIcon appendIcons[] = { new ImageIcon(getClass().getResource("resources/brick.png")), 
      new ImageIcon(getClass().getResource("resources/brick_add.png")) }; 

    /* 
    * Event listener methods for the components go here. 
    */ 
} 

此外,这里的主要JFrame类实例化LogPanel,尽管注释。包括的也是JAR的下载链接。

Link


我使用JPanel.setMinimumSize()这样我就可以驯服JTextArea不使用JScrollPane我在想这个显示不一致与此有关。如果我确实使用JScrollPane,它会完全混淆面板布局,所以我宁愿远离。

在此先感谢。


编辑1:

如果我改变将L & F到默认或系统L & F,I得到了同样的问题,我的朋友做;因此,这很可能与Nimbus本身有关。


编辑2:

原来有在JDK6, 我用其中,和JDK7之间雨云代码差异。我已经更新并用setPreferredSize()取代了 错误代码 - 现在它的功能很棒。

+2

为了更快得到更好的帮助,请将[SSCCE](http://sscce.org/)(没有第三方API,文本代替图像,简称..)作为对问题的编辑。 – 2012-07-15 03:41:54

+0

@Andrew事实证明,我使用的JDK6和JDK7之间的Nimbus代码存在差异。我已经更新并用'setPreferredSize()'替换了错误的代码,现在它工作的很好。 – Konstantin 2012-07-15 05:01:36

+0

你应该考虑发表你的评论作为答案并接受它,这种方式很容易找到其他人有类似的问题:-) – kleopatra 2012-07-22 16:24:02

回答

1

我已经找到了解决办法:

原来有在JDK6, 我用它,并JDK7的雨云代码差异。我已经更新并用setPreferredSize()取代了 错误代码 - 现在它的功能很棒。

相关问题