0

Java では、JTextField の周囲で TitledBorder を使用すると、JTextField の一部が TitledBorder を全方向にオーバーラップします。これを防ぐ方法はありますか?

4

2 に答える 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 に答える