我無法獲得標準BorderFactory.createEmptyBorder
在Java Swing中正常工作。Java Swing右邊框無法在Microsoft Windows上工作
我試着用一個簡單的Java應用程序創建一個微調視圖並在其周圍聲明一個空的邊框。邊框顯示在除微調視圖右側以外的任何地方。但這隻發生在Windows中,在OSX上它按預期工作。
爲了闡明邊框的使用:在我的真實應用程序中,在微調框外部有一個可見的邊框,然後我想將文本居中。我發現createCompoundBorder
屬性對此非常有用。
import javax.swing.*;
import java.awt.*;
import javax.swing.border.Border;
class HelloWorldSwing {
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {}
Runnable guiCreator = new Runnable() {
public void run() {
JFrame fenster = new JFrame("Hallo Welt mit Swing");
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
SpinnerNumberModel model = new SpinnerNumberModel(1,1,9,1);
JSpinner spinner = new JSpinner(model);
JFormattedTextField textField = ((JSpinner.DefaultEditor)spinner.getEditor()).getTextField();
textField.setOpaque(true);
// textField.setBackground(Color.);
spinner.setBorder(BorderFactory.createEmptyBorder(50, 100, 50, 100));
spinner.setUI(new javax.swing.plaf.basic.BasicSpinnerUI() {
protected Component createNextButton() {
Component c = new JButton();
c.setPreferredSize(new Dimension(0, 0));
c.setFocusable(false);
return c;
}
protected Component createPreviousButton() {
Component c = new JButton();
c.setPreferredSize(new Dimension(0, 0));
c.setFocusable(false);
return c;
}
});
spinner.setBackground(Color.LIGHT_GRAY);
fenster.add(spinner);
fenster.setSize(300, 200);
fenster.setVisible(true);
}
};
SwingUtilities.invokeLater(guiCreator);
}
}
編輯: 我不希望找到一個實現一個更UI元素的解決方案。這將是一個簡單而簡單的解決方案(感謝Andrew Thompson)。原因是這只是一個小問題,我陷入了這個錯誤。在小型項目中,我主要需要一個乾淨而好看的代碼,這意味着通過嘗試修復破損的代碼而不是通過執行解決方法來解決此類錯誤。
在此先感謝
Windows的哪個版本? –
此代碼從不聲明名爲「fenster」的變量(推測是JFrame?) – FredK
抱歉。意外刪除它,同時刪除一些未使用的評論。 –