[英]Set the value to JtextField in Jtable : JAVA
I try to set default path and set this value to JtextField. 我尝试设置默认路径并将此值设置为JtextField。 When I add new row and select the path it works. 当我添加新行并选择路径时,它将起作用。 But when the script is first start, I try to give default path to first row but it doesn't take the correct string. 但是,当脚本首次启动时,我尝试为第一行提供默认路径,但是它没有正确的字符串。
This is the screenshot : I give the path -> //bie-pvcs-01/logs_122 but it takes role_script.MainGuiComp@127077b 这是屏幕截图:我给出路径-> // bie-pvcs-01 / logs_122,但是它需要role_script.MainGuiComp@127077b
Here is my code : 这是我的代码:
public class MainGui extends JFrame {
private JPanel contentPane;
private JTextField userNametextField;
private JLabel searchLabel,lblNewLabel_2;
private JTable CompTable = null;
private CompTableModel CompModel = null;
private JButton addButton = null;
private String folder = File.separator+File.separator+"bie-pvcs-01"+File.separator+"logs_122"+File.separator;
private JComboBox<String> comboBox;
private JLabel pathWarningLabel;
private ArrayList<String> plist = new ArrayList<>();
File lastDirectory = new File(File.separator+File.separator+"bie-pvcs-01"+File.separator+"logs_122"+File.separator);
private JTextField textField;
private JTable table;
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception e) {
// If Nimbus is not available, you can set the GUI to another look and feel.
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainGui frame = new MainGui();
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int w = frame.getSize().width;
int h = frame.getSize().height;
int x = (dim.width-w)/4;
int y = (dim.height-h)/2;
frame.setLocation(x, y);
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public MainGui() {
getContentPane().setBackground(SystemColor.inactiveCaptionText);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 650, 650);
contentPane = new JPanel();
getContentPane().setLayout(null);
setTitle("Role Finding Script");
CompTable = CreateCompTable();
JScrollPane CompTableScrollpane = new JScrollPane(CompTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
CompTableScrollpane.setBounds(10, 325, 599, 108);
CompTableScrollpane.getViewport().setBackground(Color.white);
getContentPane().add(CompTableScrollpane);
JLabel lblUsername = new JLabel(" Username :");
lblUsername.setFont(new Font("LucidaSans", Font.BOLD, 13));
lblUsername.setBounds(10, 111, 172, 30);
Border border = BorderFactory.createRaisedSoftBevelBorder();
border = BorderFactory.createEtchedBorder();
lblUsername.setBorder(border);
getContentPane().add(lblUsername);
userNametextField = new JTextField();
userNametextField.setBounds(216, 111, 393, 30);
userNametextField.setFont(new Font("LucidaSans", Font.PLAIN, 13));
getContentPane().add(userNametextField);
userNametextField.setColumns(20);
JLabel lblRole = new JLabel(" Roles :");
lblRole.setFont(new Font("LucidaSans", Font.BOLD, 13));
lblRole.setBounds(10, 174, 172, 30);
border = BorderFactory.createEtchedBorder();
lblRole.setBorder(border);
getContentPane().add(lblRole);
comboBox = new JComboBox<String>();
comboBox.setBounds(216, 175, 393, 30);
// comboBox.addItem("CHANGE-MANAGER");
// comboBox.addItem("PCMS-PART-MANAGER");
// comboBox.addItem("PMCS-ROLE-MANAGER");
comboBox.addItem("VR_ANALYST");
getContentPane().add(comboBox);
textField = new JTextField();
textField.setFont(new Font("Dialog", Font.PLAIN, 13));
textField.setColumns(20);
textField.setBounds(216, 239, 393, 30);
getContentPane().add(textField);
searchLabel = new JLabel("Searching.. Please wait..");
searchLabel.setFont(new Font("LucidaSans", Font.BOLD, 13));
searchLabel.setBounds(216, 564, 195, 30);
searchLabel.setVisible(false);
getContentPane().add(searchLabel);
JButton btnNewButton = new JButton("Execute !");
btnNewButton.setFont(new Font("LucidaSans", Font.BOLD, 13));
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//check the username
System.out.println(CompTable.getRowCount());
if(userNametextField.getText() == null || userNametextField.getText().equals("")){
lblNewLabel_2.setText("Please filled in the username part !");
}else if(CompTable.getRowCount() == 0){
pathWarningLabel.setText("Please add at least one path..");
pathWarningLabel.setVisible(true);
}else{
for(int i=0; i<CompTable.getRowCount(); i++){
if(CompTable.getValueAt(i, 0).toString() != null && !CompTable.getValueAt(i, 0).toString().equals("")){
plist.add(CompTable.getValueAt(i,0).toString());
}
}
for(String a : plist){
System.out.println("1" + a);
}
if(plist.size() != 0){
searchLabel.setVisible(true);
SearchingClass task = new SearchingClass(searchLabel,userNametextField.getText(),comboBox.getSelectedItem().toString(),plist,textField.getText());
//run the script
task.execute();
}
}
}
});
btnNewButton.setBounds(227, 523, 126, 30);
getContentPane().add(btnNewButton);
JButton btnNewButton_1 = new JButton("+");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
CompModel.addRow("");
}
});
btnNewButton_1.setBounds(566, 481, 43, 23);
getContentPane().add(btnNewButton_1);
JLabel lblPleaseSelectThe = new JLabel("Please select the log files directories");
lblPleaseSelectThe.setForeground(Color.RED);
lblPleaseSelectThe.setHorizontalAlignment(SwingConstants.CENTER);
lblPleaseSelectThe.setBounds(180, 300, 297, 14);
getContentPane().add(lblPleaseSelectThe);
JLabel lblNewLabel_1 = new JLabel("Add New Path");
lblNewLabel_1.setFont(new Font("Tahoma", Font.ITALIC, 11));
lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
lblNewLabel_1.setBounds(444, 481, 126, 23);
getContentPane().add(lblNewLabel_1);
Color my_color1 = new Color(204,74,20);
JLabel lblRoleFindingScript = new JLabel("Role Finding Script ");
lblRoleFindingScript.setFont(new Font("Tahoma", Font.BOLD, 15));
lblRoleFindingScript.setHorizontalAlignment(SwingConstants.CENTER);
lblRoleFindingScript.setForeground(my_color1);
lblRoleFindingScript.setBounds(197, 43, 297, 30);
getContentPane().add(lblRoleFindingScript);
lblNewLabel_2 = new JLabel("");
lblNewLabel_2.setForeground(Color.RED);
lblNewLabel_2.setFont(new Font("Tahoma", Font.ITALIC, 10));
lblNewLabel_2.setBounds(226, 150, 282, 14);
getContentPane().add(lblNewLabel_2);
pathWarningLabel = new JLabel();
pathWarningLabel.setFont(new Font("Tahoma", Font.ITALIC, 11));
pathWarningLabel.setHorizontalAlignment(SwingConstants.CENTER);
pathWarningLabel.setForeground(Color.RED);
pathWarningLabel.setBounds(140, 444, 384, 14);
pathWarningLabel.setVisible(false);
getContentPane().add(pathWarningLabel);
JLabel lblNewLabel = new JLabel("");
lblNewLabel.setIcon(new ImageIcon("valeo2.png"));
lblNewLabel.setBounds(10, 11, 172, 89);
getContentPane().add(lblNewLabel);
JLabel lblRegex = new JLabel(" Regex :");
lblRegex.setFont(new Font("Dialog", Font.BOLD, 13));
lblRegex.setBounds(10, 239, 172, 30);
border = BorderFactory.createEtchedBorder();
lblRegex.setBorder(border);
getContentPane().add(lblRegex);
}
public JTable CreateCompTable() {
CompModel = new CompTableModel();
CompModel.addRow(folder);
// CompModel.addRow("");
table = new JTable(CompModel);
table.setRowHeight(new CompCellPanel().getPreferredSize().height);
table.setTableHeader(null);
CompCellEditorRenderer compCellEditorRenderer = new CompCellEditorRenderer();
table.setDefaultRenderer(Object.class, compCellEditorRenderer);
table.setDefaultEditor(Object.class, compCellEditorRenderer);
return table;
}
class CompTableModel extends DefaultTableModel {
private static final long serialVersionUID = 1L;
@Override
public int getColumnCount() {
return 1;
}
public void addRow(String string) {
super.addRow(new Object[]{new Comp(string)});
}
}
class CompCellPanel extends JPanel {
private static final long serialVersionUID = 1L;
private JLabel labelWith = new JLabel("Path : ");
private JTextField lowerField = new JTextField();
private JButton browseButton = new JButton("browse");
private JButton removeButton = new JButton("remove");
CompCellPanel() {
setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
removeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// JTable table = (JTable) SwingUtilities.getAncestorOfClass(JTable.class, (Component) e.getSource());
int row = table.getEditingRow();
table.getCellEditor().stopCellEditing();
((DefaultTableModel) table.getModel()).removeRow(row);
}
});
browseButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// JTable table = (JTable) SwingUtilities.getAncestorOfClass(JTable.class, (Component) e.getSource());
int row = table.getEditingRow();
Chooser frame = new Chooser();
table.getModel().setValueAt(frame.fileName, row, 0);
lowerField.setText(frame.fileName);
}
});
lowerField.setEditable(false);
add(labelWith);
add(lowerField);
add(browseButton);
add(removeButton);
}
public void setComp(Comp Comp) {
lowerField.setText(Comp.lower);
}
public Comp getComp() {
return new Comp(lowerField.getText());
}
}
class CompCellEditorRenderer extends AbstractCellEditor implements TableCellRenderer, TableCellEditor {
private static final long serialVersionUID = 1L;
private CompCellPanel renderer = new CompCellPanel();
private CompCellPanel editor = new CompCellPanel();
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
renderer.setComp((Comp) value);
return renderer;
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
editor.setComp((Comp) value);
return editor;
}
@Override
public Object getCellEditorValue() {
return editor.getComp();
}
@Override
public boolean isCellEditable(EventObject anEvent) {
return true;
}
@Override
public boolean shouldSelectCell(EventObject anEvent) {
return false;
}
}
class Comp {
String lower;
public Comp(String text) {
this.lower = text;
}
}
class Chooser extends JPanel {
//File chooser class
JFileChooser chooser;
String fileName;
public Chooser() {
chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
// chooser.setCurrentDirectory(lastDirectory);
int r = chooser.showOpenDialog(new JPanel());
if (r == JFileChooser.APPROVE_OPTION) {
fileName = chooser.getSelectedFile().getPath();
// lastDirectory = chooser.getSelectedFile();
}
}
}
}
Seems you store values in JTabel
like your own objects( Comp
). 似乎您像自己的对象( Comp
)一样将值存储在JTabel
。 Try to replace in your btnNewButton
ActionListener
method next lines: 尝试在btnNewButton
ActionListener
方法中替换下一行:
for(int i=0; i<CompTable.getRowCount(); i++){
if(CompTable.getValueAt(i, 0).toString() != null && !CompTable.getValueAt(i, 0).toString().equals("")){
plist.add(CompTable.getValueAt(i,0).toString());
}
}
by that: 通过这样:
for(int i=0; i<CompTable.getRowCount(); i++){
String value = ((Comp)CompTable.getValueAt(i, 0)).lower;
if(value!= null && !value.isEmpty()){
plist.add(value);
}
}
it helps you. 它可以帮助您。 Because when you use getValueAt()
method you get Comp
instance, you can cast it and get value from that object. 因为当您使用getValueAt()
方法时,您将获得Comp
实例,因此可以对其进行强制转换并从该对象获取值。
Also read about name convention . 另请参阅名称约定 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.