그래서 "이름"또는 "성"을 선택하고 마우스를 palettePane에서 누르면 첫 번째 또는 두 번째 라벨이있는 라벨이 표시되도록하려고합니다. 성이 mouseX 또는 mouseY에 나타납니다. 이것은 내가 얻은 것만 큼 멀리 떨어져 있습니다. 이견있는 사람?Mouselistener를 사용하여 JPanel에 라벨을 추가하려고 시도했습니다
public class benNameFunc extends JPanel implements ActionListener, MouseListener{
private final JRadioButton firstName;
private final JRadioButton lastName;
private final JButton deleteButton;
private JLabel firstNameLabel;
int x;
int y;
int firstOrLast = 1;
public benNameFunc(){
lastName = new JRadioButton("Last Name");
lastName.setPreferredSize(new Dimension(100, 50));
lastName.setForeground(Color.RED);
lastName.setActionCommand("last");
lastName.setSelected(false);
firstName = new JRadioButton("First Name");
firstName.setPreferredSize(new Dimension(100, 50));
firstName.setForeground(Color.RED);
firstName.setActionCommand("first");
firstName.setSelected(true);
JPanel palettePane = new JPanel(new BorderLayout());
palettePane.setPreferredSize(new Dimension (800, 500));
add(palettePane, BorderLayout.CENTER);
firstNameLabel = new JLabel("Ben");
firstNameLabel.setPreferredSize(new Dimension(100, 10));
firstNameLabel.setForeground(Color.WHITE);
firstNameLabel.setVisible(true);
palettePane.add(firstNameLabel);
buttonPane.setBackground(Color.BLACK);
firstName.addActionListener(this);
lastName.addActionListener(this);
deleteButton.addActionListener(this);
palettePane.addMouseListener(this);
}
그런 다음 액션 코드 :
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == "first") {
firstOrLast = 1;
} else if (e.getActionCommand() == "last") {
firstOrLast = 2;
} else if (e.getSource() == deleteButton){
firstOrLast = 3;
}
}
public void mousePressed(MouseEvent e) {
x = e.getX();
y = e.getY();
switch (firstOrLast) {
case 1:
firstNameLabel.setLocation(x, y);
break;
case 2:
break;
case 3:
break;
default:
break;
}
...
당신이 palette' 창은 어떤 이미지를 생성하는 데 도움이되지 수있는 레이아웃 매니저 – MadProgrammer
의 제어하에 '것입니다 내가 볼 수있는 주요 문제, 아니 생각, (JPanel에 추가 된) JLabel에 추가 된 MouseListener에 대해 [SSCCE] (http://sscce.org/), 짧은 runnale, compilable 바로 게시하십시오. – mKorbel
@MadProgrammer 절대 위치 지정을 시도했지만 palettePane 심지어 나타나지 않을 것입니다. –