Java ShowOption将所选选项显示到drawString

Java ShowOption将所选选项显示到drawString,java,swing,user-interface,drawstring,Java,Swing,User Interface,Drawstring,我在JPanel中有一个JLabel,当我在ShowOption对话框中输入一些消息并选择OK按钮时,JLabel应该打印出我输入的消息。然而,我的代码甚至没有进入TextLabel类中的paintComponent方法,我使用了一个简单的跟踪语句来检查这一点。我也尝试过在我的标签面板中添加一个新的鼠标侦听器,但仍然不起作用 我的程序代码太长,所以我只显示相关的代码 主要类别: 在鼠标手柄类中显示OptionDialog: TextLabel类: 1在哪里初始化关键字?2、不要叫重涂;在pain

我在JPanel中有一个JLabel,当我在ShowOption对话框中输入一些消息并选择OK按钮时,JLabel应该打印出我输入的消息。然而,我的代码甚至没有进入TextLabel类中的paintComponent方法,我使用了一个简单的跟踪语句来检查这一点。我也尝试过在我的标签面板中添加一个新的鼠标侦听器,但仍然不起作用

我的程序代码太长,所以我只显示相关的代码

主要类别:

在鼠标手柄类中显示OptionDialog:

TextLabel类:


1在哪里初始化关键字?2、不要叫重涂;在paintComponent内部。为了更快地获得更好的帮助,请发布一个最小的完整可验证示例。重新绘制不应在paintComponent中。不要为此扩展JLabel;使用setFont,例如。
//...list of global variables

public void go()
{       
    //...other codes

    image = new DrawLabel();
    imgPanel.add(image);
    imgPanel.setBorder(new LineBorder(Color.BLACK));
    image.addMouseListener(new MouseHandler());

    text = new TextLabel();
    tagPanel.add(text);
    tagPanel.setBorder(new LineBorder(Color.BLACK));
    tagPanel.setPreferredSize(new Dimension(200, 480));

    frame.add(imgPanel, BorderLayout.WEST);
    frame.add(tagPanel, BorderLayout.EAST);
    frame.setExtendedState(frame.getExtendedState() | JFrame.MAXIMIZED_BOTH);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
String[] options = {"OK"};
JPanel popOut = new JPanel();
JLabel lbl = new JLabel("Enter keywords: ");
JTextField txt = new JTextField(50);
popOut.add(lbl);
popOut.add(txt);
int selectedOption = JOptionPane.showOptionDialog(null, popOut, "Tag", JOptionPane.NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options , options[0]);

if(selectedOption == 0)
{
    String entered = txt.getText();
    String[] parts = entered.split(", ");

    for(int i=0; i<parts.length; i++)
    {
        keywords.add(parts[i]);
    }

}
else
{
    System.out.println("untitled");
}
private class TextLabel extends JLabel
{
    public void paintComponent(Graphics g)
    {
        if(keywords != null)
        {
            super.paintComponent(g);

            String words = "";

            for(int i=0; i<keywords.size(); i++)
            {
                words = words + keywords.get(i) + ", "; 
            }

            int fontSize = 20;
            g.setFont(new Font("TimesRoman", Font.PLAIN, fontSize));
            g.setColor(Color.BLACK);

            g.drawString(words, 50, 50);
            repaint();

            System.out.println("here");
        }
        else
        {
            super.paintComponent(g);
            repaint();
        }
    }
}