위/아래 화살표를 사용하여 스크롤하는 동안 Enter 키를 눌렀을 때만 내 콤보 상자 위쪽 타일을 업데이트하려고합니다.JComboBox에서 위쪽/아래쪽 화살표를 사용하여 스크롤하는 동안 선택된 항목을 표시하는 위쪽 타일을 업데이트하지 말아야합니다.
현재 위쪽/아래쪽 화살표를 사용하여 스크롤 할 때 현재 강조 표시된 현재 항목이 선택된 항목의 상단 타일 JComboBox
에서 업데이트 중입니다. 나는 이것을 피할 필요가있다.
여기 내 코드입니다. 미리 감사드립니다!
comboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);
참고 :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SwingControlDemo {
private JFrame mainFrame;
private JLabel headerLabel;
private JLabel statusLabel;
private JPanel controlPanel;
public SwingControlDemo() {
prepareGUI();
}
public static void main(String[] args) {
SwingControlDemo swingControlDemo = new SwingControlDemo();
swingControlDemo.showComboboxDemo();
}
private void prepareGUI() {
mainFrame = new JFrame("Java Swing Examples");
mainFrame.setSize(400, 400);
mainFrame.setLayout(new GridLayout(3, 1));
mainFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
});
headerLabel = new JLabel("", JLabel.CENTER);
statusLabel = new JLabel("", JLabel.CENTER);
statusLabel.setSize(350, 100);
controlPanel = new JPanel();
controlPanel.setLayout(new FlowLayout());
mainFrame.add(headerLabel);
mainFrame.add(controlPanel);
mainFrame.add(statusLabel);
mainFrame.setVisible(true);
}
private void showComboboxDemo() {
headerLabel.setText("Control in action: JComboBox");
final DefaultComboBoxModel fruitsName = new DefaultComboBoxModel();
fruitsName.addElement("Apple");
fruitsName.addElement("Grapes");
fruitsName.addElement("Mango");
fruitsName.addElement("Peer");
fruitsName.addElement("java");
fruitsName.addElement("Mango");
final JComboBox fruitCombo = new JComboBox(fruitsName);
fruitCombo.setSelectedIndex(0);
JScrollPane fruitListScrollPane = new JScrollPane(fruitCombo);
JButton showButton = new JButton("Show");
fruitCombo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (arg0.getModifiers() == ActionEvent.MOUSE_EVENT_MASK || arg0.getModifiers() == ActionEvent.KEY_EVENT_MASK || true) {
System.out.println("arg0" + " " + arg0.getModifiers());
}
}
});
fruitCombo.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
if (arg0.getKeyCode() == KeyEvent.VK_ENTER) {
System.out.println("enter key pressed" + arg0.getKeyCode());
}
}
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
}
});
System.out.println(fruitCombo.getComponentListeners().toString());
controlPanel.add(fruitListScrollPane);
controlPanel.add(showButton);
mainFrame.setVisible(true);
}
}
사이드 노트 :'mainFrame.addDefaultCloseOperation (WindowConstants.EXIT_ON_CLOSE);'mainFrame.addWindowListener (....' –
참고 사항 2 :'X || true'는 항상 부울 값에 대해 'true'로 평가됩니다. 표현'X'를 제거하고'fruitCombo.addActionListener'의'actionPerformed' 구현에서'true |'를 제거하십시오 –
마우스를 사용하여 작업을 수행 할 때 수정 자에 대한 특정 값을 확인하기 위해 추가했습니다. –