У меня есть следующий код Java для окна с двумя текстовыми полями: один редактируемый, другой - нет. Я хотел бы оторвать не редактируемое текстовое поле. Я использую setBackground()
функцию и, кажется, работает в конструкторском зрителя Eclipse:Установить фон Swing JTextField
Однако, когда я экспортировать его в jar
, в результате приложение выглядит следующим образом:
I я использую Eclipse 4.4.1
под MacOS 10.9.3
.
Мой код:
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class TestFrame extends JFrame {
GridBagConstraints constraints;
JTextField text0;
public TestFrame() {
super("Test window");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
Container container = getContentPane();
container.setLayout(new GridBagLayout());
JTextField editableTextField, nonEditableTextField;
constraints = new GridBagConstraints();
editableTextField = new JTextField("Enter text here");
constraints.gridx=0;
constraints.gridy=0;
container.add(editableTextField, constraints);
constraints = new GridBagConstraints();
nonEditableTextField = new JTextField("See result here");
nonEditableTextField.setBackground(getForeground());
nonEditableTextField.setEditable(false);
constraints.gridx=0;
constraints.gridy=1;
container.add(nonEditableTextField, constraints);
pack();
}
public static void main(String args[]) {
new TestFrame();
}
}
Поэтому, у меня есть два вопроса:
- Почему поведение отличается в зрителе и
jar
? - Как «вычеркнуть» текстовое поле в
jar
?
Как насчет setEnabled (false)? – Berger
@Berger 'setEnabled()' имеет немного другое поведение. Он делает текст серым, но не фоном, и я хотел бы иметь текст стандартного цвета на фоне, который соответствует цвету фона рамки приложения, например, на первом изображении. – Roman
Это может иметь какое-то отношение к внешнему виду и настройкам пользовательского интерфейса. – MadProgrammer