С моим английским языком плохо, но я попытаюсь объяснить. У меня вопрос. В JPanel я рисую линию .... они должны выйти за пределы объекта JPanel, а JScrollPane теоретически должен отображать всю панель, но она не обновляется и не отображает все строки, которые были выпущены для области действия панель.JPanel & JScrollPane и рендеринг ошибок
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.Console;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class TestFrame extends JFrame {
static int speed = 10;
static int floor = 22;
public static void createGUI() {
JFrame frame = new JFrame("Test frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final Font font = new Font("Verdana", Font.PLAIN, 25);
JPanel butPanel = new JPanel();
JButton biginButton = new JButton("start");
biginButton.setFont(font);
biginButton.setFocusable(false);
butPanel.add(biginButton);
JButton remButton = new JButton("repaint");
remButton.setFont(font);
remButton.setFocusable(false);
butPanel.add(remButton);
final JPanel labPanel = new JPanel();
final JScrollPane scrollPane = new JScrollPane(labPanel);
labPanel.setLayout(new BoxLayout(labPanel, BoxLayout.Y_AXIS));
biginButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//labPanel.getGraphics().drawString("Ololo", 50, 50);
int floH = 100;
for(int i = 0; i < floor; i++){
labPanel.getGraphics().drawLine(0, i*floH, 300, i*floH);
labPanel.getGraphics().setColor(Color.RED);
scrollPane.revalidate();
}
}
});
remButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
labPanel.repaint();
scrollPane.revalidate();
}
});
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(butPanel, BorderLayout.NORTH);
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setPreferredSize(new Dimension(screenSize.width-10, screenSize.height-10));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame.setDefaultLookAndFeelDecorated(true);
createGUI();
}
});
}
}
Что собственно вопрос тогда? – aretai
Что нужно сделать для рисования, увеличенного для прокрутки, если объекты панели за пределами –
'public class TestFrame extends JFrame {' Изменить это на 'public class TestFrame {' & class должен работать точно также (или плохо), поскольку он в настоящее время. –