/ / paintComponent nie je viditeľný java - java, swing, jpanel, paintcomponent

nie je viditeľný java - java, swing, jpanel, paintcomponent

Chcem to pridať do iného JPanelu, ale tam to nie je viditeľné. Môj ďalší Jpanel sa volá bottomPanel. PaintComponent sa má zobraziť v dolnom paneli

 bottomPanel.setLayout(null);
TestPane tp = new TestPane();
bottomPanel.add(tp);

Rozšíril som Jpanel.

  public class TestPane extends JPanel {
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}


@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
int width = getWidth() - 100;
int height = getHeight() - 100;
int x = (getWidth() - width) / 2;
int y = (getHeight() - height) / 2;
g2d.setColor(Color.RED);
g2d.drawRect(x, y, width, height);
g2d.dispose();
}

}

odpovede:

3 pre odpoveď č. 1

Problém začína:

bottomPanel.setLayout(null);

Java GUI musia pracovať na rôznych OS ", obrazovkaveľkosť, rozlíšenie obrazovky atď. pomocou rôznych PLAF v rôznych miestnych nastaveniach. Preto nepodporujú dokonalé rozloženie pixelov. Namiesto toho použite manažérov rozloženia alebo ich kombinácie spolu s výplňou rozloženia a okrajmi pre Biely vesmír.

A v budúcnosti namiesto MCVE pošlite viac ako 300 riadkov kódu s irelevantnými doplnkami, ako sú vstupno-výstupné súbory, tabuľky, triediče riadkov atď.


2 pre odpoveď č. 2

Pracuje pre mňa...

Pracovné dôkazy

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Test {

public static void main(String[] args) {
new Test();
}

public Test() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
JPanel outer = new JPanel(new BorderLayout());
outer.add(new TestPane());
frame.add(outer);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}

public class TestPane extends JPanel {

@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
int width = getWidth() - 100;
int height = getHeight() - 100;
int x = (getWidth() - width) / 2;
int y = (getHeight() - height) / 2;
g2d.setColor(Color.RED);
g2d.drawRect(x, y, width, height);
g2d.dispose();
}

}

}

Zvážte poskytnutie a spustiteľný príklad čo demonštruje váš problém