Получение позиции компонента внутри paintComponent - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь нарисовать прямоугольник со скругленными углами в качестве фона для компонента в моем пользовательском интерфейсе. Для этого я вызываю метод fillRoundRect(). Однако я не могу найти способ получить позицию компонента. Я пытался использовать getX() и getY(), getLocation(), getBounds() и getLocationOnScreen(). Все эти методы помещают прямоугольник в неправильную позицию при вызове в переопределенном методе paintComponent().

Основной класс:

JScrollPane projectListPane;
JPanel projectEntriesPane;

public static void main(String[] args) {
    JFrame frame = new JFrame("Being Productive");
    frame.setSize(300,300);
    frame.setContentPane(new TestClass());
    frame.pack();
    frame.setVisible(true);
}

public TestClass() {

    setLayout(new BorderLayout());
    initProjectPane();
    projectListPane = new JScrollPane(projectEntriesPane);
    add(projectListPane);
}

private void initProjectPane() {
    projectEntriesPane = new JPanel();
    projectEntriesPane.setLayout(new BoxLayout(projectEntriesPane,BoxLayout.Y_AXIS));
    for(int i = 0; i < 4; i++)
    {
        JLabel label = new JLabel();
        JRounded round = new JRounded(label);
        label.setText("test");
        projectEntriesPane.add(round);
    }
    projectEntriesPane.repaint();//just seeing if this would do anything. It didn't
}

Класс пользовательских компонентов:

public class JRounded extends JPanel{

public JRounded(Component contained) {
    setLayout(new BorderLayout());
    add(contained, BorderLayout.CENTER);
}

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D) g;

    g2.setPaint(Color.RED);
    g2.setStroke(new BasicStroke(2.0f));

    Point position = **position method**;
    g2.fillRoundRect(position.x, position.y, getWidth(), getHeight(), 15, 15);
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...