Java では、JTextField の周囲で TitledBorder を使用すると、JTextField の一部が TitledBorder を全方向にオーバーラップします。これを防ぐ方法はありますか?
質問する
2372 次
2 に答える
1
テキストフィールドの境界線を a に置き換えるとTitledBorder
、フィールドの自然な境界線が失われます。解決策は、 をフィールドの境界線とCompoundBorder
組み合わせたを作成することです。TitledBorder
JTextField field = new JTextField(10);
field.setBorder(new CompoundBorder(BorderFactory.createTitledBorder("Title"), field.getBorder()));
ただし、TitledBorder は引き続きテキスト フィールドの背景色を継承します。
もう 1 つの解決策は、テキスト フィールドを に埋め込み、 をパネルにJPanel
配置することです。TitledBorder
JTextField field = new JTextField(10);
JPanel borderPanel = new JPanel();
borderPanel.setBorder(BorderFactory.createTitledBorder("Title"));
borderPanel.add(field);
于 2013-03-15T09:03:05.640 に答える
0
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class AA
{
public static void main(String[] args)
{
FrameCreator Frame= new FrameCreator();
Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Frame.setVisible(true);
}
}
class FrameCreator extends JFrame
{
public FrameCreator()
{
int height=100;
int width=300;
setSize(width,height);
setLocation(0,0);
setTitle("TextField example");
showPanel=new JPanel();
textFieldPanel=new JPanel();
label=new JLabel("Sentence");
label.setFont(new Font("Serif",Font.PLAIN,12));
showPanel.add(label);
add(showPanel, BorderLayout.CENTER);
textfield=new JTextField("Sentence", 20);
textfield.setBorder(BorderFactory.createTitledBorder("Name"));
textfield.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent evento1)
{
String sentence=textfield.getText();
label.setText(sentence);
}
});
textFieldPanel.add(textfield);
add(textFieldPanel, BorderLayout.SOUTH);
}
JLabel label;
JPanel showPanel, textFieldPanel;
String sentence;
JTextField textfield;
}
私は textfield.setBorder(BorderFactory.createTitledBorder("Name")); を使用しました。
于 2013-03-15T16:49:40.997 に答える