当前位置: 首页 > 知识库问答 >
问题:

如何从带有图像图标的jlist中获取选定的元素文本?

井学
2023-03-14

错误图像使用对象我试图在JList中的jtextfield中显示选定的元素文本。该列表包含数据库数据和图像,其中从列表中获取所选值会引发错误。

String index = String.valueOf(jList1.getSelectedIndex());
jTextField1.setText(index);
String s = (String) jList1.getSelectedValue();
jTextField2.setText(s);
try {
        Class.forName("org.apache.hive.jdbc.HiveDriver");
        Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "arunachalam", "");
        Statement st = con.createStatement();
        String sql = "show databases";
        ResultSet rs = st.executeQuery(sql);

        while (rs.next()) {
            String s1 = rs.getString(1);
            dm.addElement(new ImgsNText(s1, new ImageIcon("images/hive_db.png")));
        }
        jList1.setCellRenderer(new Renderer());
        jList1.setModel(dm);
        if(jList1.isSelectedIndex(0))
        {

        }
    } catch (Exception e) {
        showMessageDialog(null, "Exception");
    }

建议我如何单独从jlist获取文本并将其显示在JTextField中。

共有1个答案

云胤
2023-03-14

首先,您必须创建一个ListCellRenderer,用于在List中显示图像和文本。然后在list上调用ListSelectionListener来捕获list SelectionClick事件,然后获取所选项目,并在文本字段中设置所选项目的文本。

更新的代码

import java.awt.Component;
import java.awt.Container;
import java.awt.FlowLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JTextField;
import javax.swing.ListCellRenderer;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class ListExample implements ListSelectionListener {

  JList list;
  DefaultListModel listModel;
  JTextField txtField;
  Connection connection;
  PreparedStatement pst;
  ResultSet rs;

  public ListExample() {
    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame frame = new JFrame("LIST");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Container con = frame.getContentPane();

    ListRenderar rendrar = new ListRenderar();
    list = new JList();
    txtField = new JTextField(10);

    listModel = new DefaultListModel();
    try {
      Class.forName("com.mysql.jdbc.Driver");
      connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/ganesh", "root",
          "admina");
      pst = connection.prepareStatement("show databases");
      rs = pst.executeQuery();
      while (rs.next()) {
        String text = rs.getString(1);
        listModel.addElement(new ImgNText(text, new ImageIcon("/images/help.gif")));
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    list.setModel(listModel);

    list.setCellRenderer(rendrar);
    list.addListSelectionListener(this);

    con.add(list);
    con.add(txtField);

    con.setLayout(new FlowLayout());

    frame.setVisible(true);
    frame.pack();
  }

  public class ListRenderar extends JLabel implements ListCellRenderer {

    @Override
    public Component getListCellRendererComponent(JList list, Object value, int index,
                                                  boolean isSelected, boolean cellHasFocus) {

      ImgNText imgNtext = (ImgNText) value;
      ImageIcon icon = imgNtext.getImage();
      String name = imgNtext.getText();

      setIcon(icon);
      setText(name);

      return this;
    }
  }

  public void valueChanged(ListSelectionEvent e) {
    ImgNText obj = (ImgNText) list.getSelectedValue();
    txtField.setText(obj.getText());
  }

  public class ImgNText {

    ImageIcon image;
    String text;

    public ImgNText(String text, ImageIcon image) {
      this.image = image;
      this.text = text;
    }

    public ImageIcon getImage() {
      return image;
    }

    public String getText() {
      return text;
    }
  }

  public static void main(String args[]) {
    new ListExample();
  }
}
 类似资料:
  • 有可能在JList中获得所选元素的位置吗?我想让它将JFrame放在单击选项的正下方。

  • 我通过JFileChooser使用下面这段代码将一个名为test.xml的文件添加到我的JList中; 现在我必须从Jlist中选择一个文件,然后将它转换成另一个文档。如果我给出输入,转换步骤就会起作用; 但是如果我给它,它就不起作用; 列表及其向量使用以下代码段创建: 你们谁能告诉我如何从JList中选择该特定文件来进行转换吗?提前感谢…!

  • 问题内容: 有什么方法可以检查PNG图像的选定点(x,y)是否透明? 问题答案: 基于Jeff的答案,您的第一步将是创建PNG的画布表示。以下内容将创建一个屏幕外画布,该画布的宽度和高度与您的图像相同,并在其上绘制图像。 之后,当用户单击时,使用和获取位置。然后可以用来获取像素: 因为您只抓取一个像素,所以pixelData是一个包含四个像素的R,G,B和A值的四项数组。对于Alpha,任何小于2

  • 我有一个jpg格式的地图图像。我正在尝试为每个像素计算纬度和经度。我有3点坐标也像素行和列。 地图图像 这里有三点: BLK:LATLNG:39.760751,27.840443 UTM_Meters:571990.1817772812,4401541.17886532区/带:35,'S'像素:[210,247]

  • 问题内容: 我用数据库搜索的结果修改了,以便稍后使用该选择提出另一个数据库请求。 我想获取该字段的值。我可以使用哪种方法? 我只是以为我也可以向中添加事件,并将其保留在控制器的属性中。那也可以接受吗? 问题答案: 用这样的列表视图说: 从ListView获取选定的元素: 跟踪(监听)列表视图选择中的更改:

  • 上面的代码从一个名为“多媒体资料”的自定义帖子中提取WordPress多媒体资料,然后存储并显示图像。是否有一种方法也可以将库的标题存储到变量中?