나는 아주 간단한 데모 프로그램을 가지고 있으며 짧은 코드 버전이 아니라 내가 할 수있는 가장 짧은 버전을 유감스럽게 생각한다. 어쨌든, 난 여기에 jtable
열 2 편집 가능한 셀이 있습니다. append
selected cell
jtable
의 오른쪽에있는 숫자 패드를 원하지만 .setValueAt()
않습니다. 오른쪽에있는 숫자판이 선택한 셀에 추가 할 수있는 방법이 있습니까? 아니면 내가해야JTable 셀에 텍스트를 추가하는 방법
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.EventObject;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.event.CellEditorListener;
import javax.swing.table.*;
public class Jtabledemo {
private static class JTabledemo {
JTable table;
JFrame Card = new JFrame();
JTabbedPane card_tab = new JTabbedPane(); // FOR TAB
JPanel buttonpanel = new JPanel(); // FOR BUTTON BELOW
FlowLayout flow = new FlowLayout(FlowLayout.LEFT);
public JTabledemo() {
Card.setVisible(true);
Card.setSize(821,340);
Card.setTitle("");
Card.setResizable(false);
final Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
int x=(int)((dimension.getWidth() - Card.getWidth())/2);
int y=(int)((dimension.getHeight() - Card.getHeight())/2);
Card.setLocation(x, y);
Card.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel bodypanel = new JPanel();
bodypanel.setLayout(new BorderLayout());
JPanel container = new JPanel();
container.setLayout(new BorderLayout());
JPanel jp1 = new JPanel();
jp1.setBackground(Color.lightGray);
jp1.setPreferredSize(new Dimension(510,260));
jp1.setLayout(new BorderLayout());
table = new JTable(new ExampleTableModel());
JScrollPane scrollPane = new JScrollPane(table);
table.setFillsViewportHeight(true);
JTableHeader header = table.getTableHeader();
table.setRowHeight(20);
jp1.add(scrollPane);
JPanel buttonpanel = new JPanel();
buttonpanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
buttonpanel.setBorder(new EmptyBorder(0,0,0,0));
JButton btnOk = new JButton("Ok");
btnOk.setPreferredSize(new Dimension(90, 40));
buttonpanel.add(btnOk);
final JButton btnCancel = new JButton("Cancel");
btnCancel.setPreferredSize(new Dimension(90, 40));
buttonpanel.add(btnCancel);
JPanel container2 = new JPanel();
container2.setLayout(new BorderLayout());
container2.setPreferredSize(new Dimension(344,0));
JPanel numberpanel = new JPanel();
numberpanel.setPreferredSize(new Dimension(235,0));
numberpanel.setBorder(new EmptyBorder(25,0,0,0));
numberpanel.setBorder(BorderFactory.createEtchedBorder(Color.white,Color.gray));
numberpanel.setLayout(flow);
JButton button_7 = new JButton("7");
button_7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
table.setValueAt("7", table.getSelectedRow(), table.getSelectedColumn());
}
});
button_7.setPreferredSize(new Dimension(70, 70));
numberpanel.add(button_7);
JButton button_8 = new JButton("8");
button_8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
table.setValueAt("8", table.getSelectedRow(), table.getSelectedColumn());
}
});
button_8.setPreferredSize(new Dimension(70, 70));
numberpanel.add(button_8);
JButton button_9 = new JButton("9");
button_9.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
table.setValueAt("9", table.getSelectedRow(), table.getSelectedColumn());
}
});
button_9.setPreferredSize(new Dimension(70, 70));
numberpanel.add(button_9);
Card.add(bodypanel);
bodypanel.add(container, BorderLayout.WEST);
container.add(jp1,BorderLayout.NORTH);
container.add(buttonpanel,BorderLayout.SOUTH);
bodypanel.add(container2, BorderLayout.EAST);
container2.add(numberpanel, BorderLayout.EAST);
}
public static class ExampleTableModel extends DefaultTableModel {
public ExampleTableModel() {
super(new Object[]{"Tank", "Current", "Dip"}, 0);
for (int index = 0; index < 4; index++) {
addRow(new Object[]{index, "Text for " + index, "Na na", index});
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return columnIndex == 2;
}
}
}
public static void main(String[] args){
//Use the event dispatch thread for Swing components
EventQueue.invokeLater(new Runnable() {
@Override
@SuppressWarnings("ResultOfObjectAllocationIgnored")
public void run() {
new JTabledemo();
}
});
}
}
편집
만 1 번호가 삽입 된 숫자 키패드를 클릭하면 같은 내가 선택한 셀에 추가해야 할 숫자 키패드를 클릭합니다. 그 숫자가 선택된 셀에 추가되기를 원합니다.
그래서 당신은 선택한 행은 숫자 패드의 오른쪽에 복사 원하십니까? – Braj
나는 혼란 스럽다. 위의 코드가 원하지 않는 코드와 수행하고 싶지 않은 코드를 설명하십시오. –
@HovercraftFullOfEels 질문에서 편집을보십시오. – user3771102