JPanel
に埋め込みたい拡張クラスがありJFrame
ます。L&Fはニンバスに設定されており、パネルに使用しているレイアウトはですGridBagLayout
。
JARを友人に渡したときJTextArea
、ログコンソールとして使用するつもりでしたが、動作を開始し、設定したサイズを維持できませんでした。
textAreaLog.setMinimumSize(new Dimension(295, 48));
私はWinXPSP2を使用しており、友人はWin764ビットを使用しています。これが私のPC(左)と彼のPC(右)でどのように見えるかの写真です:
明らかに、私はそれを自分のマシンで使用する方法にするつもりでした。
関連するコードは次のとおりです(パネルに使用されるクラスのほぼ全体):
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のダウンロードリンクも含まれています。
を使用しているので、を使用せずJPanel.setMinimumSize()
に飼いならすことができます。表示の不一致はこれに関係していると思います。を使用すると、パネルレイアウトが完全に台無しになるので、遠ざけたいと思います。JTextArea
JScrollPane
JScrollPane
前もって感謝します。
編集1:
L&FをデフォルトまたはシステムL&Fに変更すると、友人と同じ問題が発生します。したがって、それはニンバス自体に関係している可能性が最も高いです。
編集2:
私が使っていたJDK6とJDK7ではニンバスコードに違いがあることがわかりました。それ以来、障害のあるコードを更新して置き換えました—
setPreferredSize()
今ではうまく機能しています。