一千萬個為什麽

搜索

Swing - 如何混合JTextField和JTextAreas並具有相同的視覺外觀?

我正在使用miglayout創建一個表單,其中有JTextFields(簡短的輸入答案)以及JTextAreas(更長的答案)。問題是雙重的。

  1. 圍繞Scrollpane包裝文本區域放置的邊框與文本字段的邊框不匹配。
  2. textarea/textfield的寬度和位置不同,導致它們無法正確排列。

替代文字http://grab.by/3O0V

從右/左更改為右/填充後: 替代文字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的首選方法是什麽?我現在註意到,當焦點位於文本區域時,文本字段周圍有一個藍色高光,而不是文本區域...另一個視覺不連續源。

最佳答案

我知道這個問題已經很老了,但要獲得 TextArea 的邊框以匹配 TextField 的邊框:

(myTextArea).setBorder(new TextField().getBorder());

這應該為您的 TextArea 提供一個邊框,就像 TextField 周圍的邊框一樣。

轉載註明原文: Swing - 如何混合JTextField和JTextAreas並具有相同的視覺外觀?