我正在使用miglayout來創建一個表單,其中有JTextFields(短輸入答案)以及JTextAreas(更長的答案)。問題是雙重的。Swing - 如何混合JTextField和JTextAreas並具有相同的視覺外觀?
- 圍繞Scrollpane包裹的文本區域放置的邊框與文本區域的邊框不匹配。
- textarea/textfield的寬度和位置不同,導致它們不能正確排列。
右/左變化到右後/填充: alt text http://grab.by/3RMk 你可以看到,邊界排隊,但還是有差距的。我嘗試設置novisualpadding,但這並沒有解決它。
的源代碼:
package test2;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import net.miginfocom.swing.MigLayout;
public class Test extends JPanel {
private static final int NUM_CHARACTERS_WIDTH = 20;
private static final int NUM_ROWS = 5;
public Test() {
setLayout(new MigLayout(
"wrap 2",
// Align text labels on the so their right edge meets left edge of the text fields
"[right][left]"
));
add(new JLabel("Text field:"));
add(new JTextField(NUM_CHARACTERS_WIDTH));
add(new JLabel("No scrollpane text area:"));
add(new JTextArea(NUM_ROWS, NUM_CHARACTERS_WIDTH));
add(new JLabel("Scrollpane text area:"));
add(new JScrollPane(new JTextArea(NUM_ROWS, NUM_CHARACTERS_WIDTH)));
add(new JLabel("Text field:"));
add(new JTextField(NUM_CHARACTERS_WIDTH));
}
public static void main(String[] args) {
JFrame frame = new JFrame("");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new Test();
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
什麼是混合的首選方法和匹配的JTextField和jtextareas,同時仍保持視覺上的和諧?現在我注意到,當焦點位於其中時,文本字段在其周圍具有藍色高光,與文本區域相反......視覺不連續性的另一個來源。
[填充]有幫助。但是,Mac OSX上的尺寸仍然不夠完美:http://grab.by/3O9U – I82Much 2010-04-16 18:57:01
也許更適應性的選擇是採用一種組件類型的首選邊框並將其應用於另一種;例如textField.setBorder(scrollPane.getBorder())。 – 2010-04-16 18:57:07
考慮給java.awt.GridBagLayout一個嘗試。有關更多代碼,請參閱我的修訂答案 – 2010-04-16 19:16:53