【问题标题】:how can i transparent my JTextField and JLabel我怎样才能透明我的 JTextField 和 JLabel
【发布时间】:2018-08-16 01:05:15
【问题描述】:

我的JTextFieldJLabelJPanel 中不透明当JTable 可见时,它在JTextFieldJLabel 之间重叠。当我在搜索 (JTextField) 中搜索某些内容时,我想显示 JTable,但它重叠并且 JTable 不正确可见。请帮助这里是我的代码:

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.ImageIcon;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import javax.swing.border.BevelBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableModel;

import com.alee.laf.WebLookAndFeel;

import java.awt.Color;
import javax.swing.JTextField;
import java.awt.Font;
import javax.swing.JTable;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JScrollPane;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JLayeredPane;

public class ButtonBarExample1 {

    private JFrame frame;
    private JTextField Search;
    private JTable CategoryTable;
    private DefaultTableModel model;
    private static Connection con;
    private String query;
    private PreparedStatement PStat;
    private ResultSet res;
    private JScrollPane scrollPane;
    private int Enter=0;
    private JPanel panel;
    private JLabel label;
    private JLabel label_1;
    private JTextField CategoryID;
    private JTextField CategoryName;
    private JPanel panel_1;
    /**
     * Launch the application.
     */
    public static void main(String\[\] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    WebLookAndFeel.install();
                    ButtonBarExample1 window = new ButtonBarExample1();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public ButtonBarExample1() {
        initialize();
        con=Database.Database();
    }

    public void remove(){
        while(CategoryTable.getRowCount()>0) {
            model.removeRow(0);
        }
    }

    public void changed(){
        if(Search.getText().length()==0){
            panel.remove(scrollPane);
            panel.repaint();
            panel.revalidate(); 
        }else{
            try{
            panel.add(scrollPane);
            scrollPane.setViewportView(CategoryTable);
            remove();
            query="Select * from CategoryEntry where Category_Name like '"+Search.getText().trim()+"%'";
            PStat=con.prepareStatement(query);
            res=PStat.executeQuery();

            model=(DefaultTableModel)CategoryTable.getModel();
            model.setRowCount(0);
            CategoryTable.setRowHeight(30);

            while(res.next()){
                String CatID=res.getString("Category_ID");
                String CatName=res.getString("Category_Name");
                Object\[\] row= {CatID,CatName};
                model.addRow(row);
            }
            }catch(Exception e){
                e.printStackTrace();
            }finally{
                try{
                    PStat.close();
                    res.close();
                }catch(Exception e){
                    e.printStackTrace();
                }
            }   
        }
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 934, 601);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        panel = new JPanel();
        GroupLayout groupLayout = new GroupLayout(frame.getContentPane());
        groupLayout.setHorizontalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addGroup(groupLayout.createSequentialGroup()
                    .addComponent(panel, GroupLayout.PREFERRED_SIZE, 917, GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        groupLayout.setVerticalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addGroup(groupLayout.createSequentialGroup()
                    .addComponent(panel, GroupLayout.PREFERRED_SIZE, 562, GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        panel.setLayout(null);

        Search = new JTextField();
        Search.getDocument().addDocumentListener(new DocumentListener(){
                public void changedUpdate(DocumentEvent e){
                    changed();
                }
                public void removeUpdate(DocumentEvent e){
                    changed();
                }
                public void insertUpdate(DocumentEvent e){
                    changed();
                }
                });
        Search.setBounds(90, 11, 402, 31);
        panel.add(Search);
        Search.setColumns(10);

        scrollPane = new JScrollPane();
        scrollPane.setBounds(90, 41, 402, 127);

        CategoryTable = new JTable();
        CategoryTable.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent arg0) {
                int row=CategoryTable.getSelectedRow();
                String TableClicked=(CategoryTable.getModel().getValueAt(row, 0)).toString();

                try{
                query="Select * from CategoryEntry where Category_ID='"+TableClicked+"'";
                PStat=con.prepareStatement(query);
                res=PStat.executeQuery();

                if(res.next()){
                    String CatID=res.getString("Category_ID");
                    CategoryID.setText(CatID);
                    String CatName=res.getString("Category_Name");
                    CategoryName.setText(CatName);
                }
                }catch(Exception e){
                    e.printStackTrace();
                }finally{
                    try{
                        PStat.close();
                        res.close();
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
            }
        });
        CategoryTable.setModel(new DefaultTableModel(
            new Object\[\]\[\] {
            },
            new String\[\] {
                "CategoryID", "CategoryName"
            }
        ));

        JLabel lblNewLabel = new JLabel("Search");
        lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 13));
        lblNewLabel.setBounds(21, 19, 46, 14);
        panel.add(lblNewLabel);

        panel_1 = new JPanel();
        panel_1.setBounds(31, 53, 317, 76);
        panel_1.setOpaque(false);
        panel.add(panel_1);
        panel_1.setLayout(null);

        label_1 = new JLabel("Category ID");
        label_1.setBounds(10, 14, 97, 18);
        panel_1.add(label_1);
        label_1.setFont(new Font("Tahoma", Font.BOLD, 11));

        CategoryID = new JTextField();
        CategoryID.setBounds(117, 11, 157, 25);
        CategoryID.setBackground(new Color(255,255,255,128));
        CategoryID.setOpaque(false);
        panel_1.add(CategoryID);
        CategoryID.setEditable(false);
        CategoryID.setColumns(10);

        label = new JLabel("Category Name");
        label.setBounds(10, 42, 97, 18);
        panel_1.add(label);
        label.setFont(new Font("Tahoma", Font.BOLD, 11));

        CategoryName = new JTextField();
        CategoryName.setBounds(117, 39, 157, 25);
        panel_1.add(CategoryName);
        CategoryName.setEditable(false);
        CategoryName.setColumns(10);
        frame.getContentPane().setLayout(groupLayout);
    }
}

Screenshot

【问题讨论】:

  • 发布正确的minimal reproducible example 来说明问题。我们无权访问您的数据库,因此我们无法运行您的代码来查看所描述的问题。因此,您只需使用具有指定行数/列数的 DefaultTableModel 创建一个 JTable。此外,变量名不应以大写字符开头。
  • panel.setLayout(null);lblNewLabel.setBounds(21, 19, 46, 14); 可能是您问题的开始。
  • 顺便说一句,此代码不会编译,因为:new Object\[\]\[\] { 请发布一个有效的可运行示例
  • This is an example 我前段时间提供了与JTable 内联的JTextField 显示,因此当用户开始键入时,它会在JTable 过滤器上显示JTextField JTable 实时
  • 或者您可以使用 Sorting and Filtering 上的 Swing 教程中的示例。它不仅提供了一个带有解释的工作示例,而且您还有一个指向 Swing 资源的链接,以解决未来的问题。

标签: java swing jtable jlabel jtextfield


【解决方案1】:

我已经解决了。实际上,我将滚动窗格透明度设置为 true,并将其视口设置为透明度,如下所示。

scrollPane.setOpaque (true); scrollPane.getViewPort ().setOpaque (true);

【讨论】:

    猜你喜欢
    • 2016-03-07
    • 2017-12-11
    • 2017-09-02
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 2017-11-10
    相关资源
    最近更新 更多