Java 使标题边框标题可编辑

Java 使标题边框标题可编辑,java,swing,titled-border,Java,Swing,Titled Border,有没有办法使标题边框中的标题可编辑,以便用户可以编辑标题?或者如果有另一个边界允许这样做,那是什么 Box.setBorder(new TitledBorder(editableString)); 编辑: 这里有一个链接,指向我关于双击编辑的更具体问题: 基本上,保留对标题边框的引用,在需要时进行更改,然后用边框重新绘制组件。如下所示:更改文本字段中的文本,然后按Enter键查看效果 import java.awt.*; import java.awt.image.*; import java

有没有办法使标题边框中的标题可编辑,以便用户可以编辑标题?或者如果有另一个边界允许这样做,那是什么

Box.setBorder(new TitledBorder(editableString));
编辑:

这里有一个链接,指向我关于双击编辑的更具体问题:

基本上,保留对标题边框的引用,在需要时进行更改,然后用边框重新绘制组件。如下所示:更改文本字段中的文本,然后按Enter键查看效果

import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class EditableTitledBorder {

    private JComponent ui = null;
    private TitledBorder titledBorder;

    EditableTitledBorder() {
        initUI();
    }

    public void initUI() {
        if (ui!=null) return;

        ui = new JPanel(new BorderLayout(4,4));
        String initialTitle = "Dark Image";
        titledBorder = new TitledBorder(initialTitle);
        ui.setBorder(titledBorder);
        final JTextField titleField = new JTextField(initialTitle);
        ActionListener changeTitleListener = new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                titledBorder.setTitle(titleField.getText());
                ui.repaint();
            }
        };
        titleField.addActionListener(changeTitleListener);
        ui.add(titleField, BorderLayout.PAGE_START);
        ui.add(new JLabel(new ImageIcon(
                new BufferedImage(200,40,BufferedImage.TYPE_INT_RGB))));
    }

    public JComponent getUI() {
        return ui;
    }

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (Exception useDefault) {
                }
                EditableTitledBorder o = new EditableTitledBorder();

                JFrame f = new JFrame(o.getClass().getSimpleName());
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                f.setLocationByPlatform(true);

                f.setContentPane(o.getUI());
                f.pack();
                f.setMinimumSize(f.getSize());

                f.setVisible(true);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}

查看这是否有帮助:边框不是组件,因此无法获取焦点,因此用户无法直接编辑。做一些看起来像你们想要的事情是可能的,但这并不容易。我是否必须扩展TitledBorder类,使其不包含一个JTextBox作为标题?这可能吗?不,正如我已经说过的,边界不是一个组成部分。无法获得焦点。如果所有其他操作都失败,我将在当前框的顶部创建一个额外框,然后设置当前框边框,但我更喜欢标题边框的设计。我希望标题本身可以单击并更改。我真的不喜欢两个头衔的样子。即使这意味着右键单击或双击边框以打开更改边框的文本字段。我还使用了BoxLayout和Box。谢谢。“我希望标题本身可以点击和更改。”好的,我建议你将这个问题标记为已回答,然后提出一个新的、更具体的问题,给出额外的要求。可以。我的错是在这个问题上不够具体。