Я создал пользовательский интерфейс с подвижными компонентами. Когда я создаю один, он выглядит как самая большая фотография. Как только я начинаю перемещать его, пространство вокруг кнопки становится черным, как видно посередине. Когда я перехожу в другое окно (например, сафари), пространство вокруг радиоокна также становится черным. Любые идеи почему?Странные черные границы вокруг JComponents в Swing Java
EDIT:
Комбинированный 3button представляет собой расширенный класс JPalet что встраиваются в другой панели JPanel1, что в кадре. Как только я переутверждаю и перекрашу в JPanel1, ошибка снова исчезнет. Или когда я простреливаю одну 3 баттона над другой (что, вероятно, также вызывает перерисовку).
Я двигаюсь 3button вокруг с MouseMotionListener наклеенного на JButton с MouseAdapter MouseDrag
EDIT:
Надеется, что это фрагмент кода достаточно мала.
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
public class UiTestFrame {
public UiTestFrame() {
buildUi();
}
void buildUi() {
JFrame frame = new JFrame("TestFrame");
XButton jButton = new XButton();
frame.add(jButton);
jButton.setSize(jButton.getPreferredSize());
jButton.setLocation(10, 10);
frame.revalidate();
frame.repaint();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setSize(500, 500);
frame.setVisible(true);
}
private class XButton extends javax.swing.JPanel {
public XButton() {
initComponents();
jButton1.addMouseMotionListener(new MotionEvent(this));
}
private void initComponents() {
jButton1 = new javax.swing.JButton();
jRadioButton1 = new javax.swing.JRadioButton();
jRadioButton2 = new javax.swing.JRadioButton();
setBackground(new java.awt.Color(0, 0, 0, 0f));
setPreferredSize(new java.awt.Dimension(130, 30));
setLayout(null);
jButton1.setText("jButton1");
jButton1.setAlignmentY(0.0F);
jButton1.setContentAreaFilled(false);
jButton1.setFocusPainted(false);
jButton1.setFocusable(false);
jButton1.setMargin(new java.awt.Insets(-2, -2, -2, -2));
add(jButton1);
jButton1.setBounds(19, 0, 90, 30);
jRadioButton1.setEnabled(false);
jRadioButton1.setFocusable(false);
add(jRadioButton1);
jRadioButton1.setBounds(0, 0, 20, 30);
jRadioButton2.setEnabled(false);
jRadioButton2.setFocusable(false);
jRadioButton2.setName(""); // NOI18N
add(jRadioButton2);
jRadioButton2.setBounds(100, 0, 30, 30);
}
private javax.swing.JButton jButton1;
private javax.swing.JRadioButton jRadioButton1;
private javax.swing.JRadioButton jRadioButton2;
}
private class MotionEvent extends MouseAdapter {
javax.swing.JComponent button;
Point pt;
public MotionEvent(javax.swing.JComponent button) {
this.button = button;
}
public void mouseMoved(MouseEvent e) {
pt = e.getPoint();
}
public void mouseDragged(MouseEvent e) {
Point p = SwingUtilities.convertPoint(button, e.getPoint(), button.getParent());
button.setLocation(p.x - pt.x, p.y - pt.y);
}
}
}
Вы сами рисуете? Как вы его перемещаете? Если возможно, пожалуйста, используйте [минимальный, полный пример] (http://stackoverflow.com/help/mcve), который воспроизводит поведение. – Radiodef
Получил минимальный рабочий пример, см. Edit – Josephus87