如何用Java中的ImageIcon修复JLabel上的JScrollBar?
有人能帮我吗?我正在尝试创建一个如何用Java中的ImageIcon修复JLabel上的JScrollBar?,java,swing,awt,jlabel,Java,Swing,Awt,Jlabel,有人能帮我吗?我正在尝试创建一个JFrame,在那里我可以调整JScrollBar,并使用ImageIcon从上到下更改JLabel的视图,包括另一个JLabel的MouseEvent的JFileChooser 不幸的是,我的代码没有像我想象的那样工作。你知道为什么会这样吗?或者有没有我应该知道的缺失代码?我唯一的目标是使JScrollBar在jlabel public class DocVieweR extends JFrame { /** * */ p
JFrame
,在那里我可以调整JScrollBar
,并使用ImageIcon
从上到下更改JLabel
的视图,包括另一个JLabel
的MouseEvent
的JFileChooser
不幸的是,我的代码没有像我想象的那样工作。你知道为什么会这样吗?或者有没有我应该知道的缺失代码?我唯一的目标是使JScrollBar
在jlabel
public class DocVieweR extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private int yPos = 0;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
DocVieweR frame = new DocVieweR();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public DocVieweR() {
setTitle("DocVieweR");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(816, 705);
setLocationRelativeTo(null);
setResizable(false);
contentPane = new JPanel();
setContentPane(contentPane);
contentPane.setLayout(null);
JScrollBar scrollBar = new JScrollBar();
scrollBar.addAdjustmentListener(new AdjustmentListener() {
@Override
public void adjustmentValueChanged(AdjustmentEvent e) {
yPos =+ e.getValue();
}
});
scrollBar.setBounds(793, 0, 17, 676);
contentPane.add(scrollBar);
JLabel lblPHOTO1x1 = new JLabel("SELECT IMAGE");
lblPHOTO1x1.setFont(new Font("Segoe UI", Font.BOLD, 16));
lblPHOTO1x1.setHorizontalAlignment(SwingConstants.CENTER);
lblPHOTO1x1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JFileChooser chosenFILE = new JFileChooser();
chosenFILE.showOpenDialog(null);
File getFILE = chosenFILE.getSelectedFile();
ImageIcon pic = new ImageIcon(getFILE.getAbsolutePath());
lblPHOTO1x1.setIcon(pic);
}
});
lblPHOTO1x1.setBounds(585, 228, 129, 128);
contentPane.add(lblPHOTO1x1);
JLabel lblBIODATA = new JLabel("");
ImageIcon img = new ImageIcon("resources/BIODATA_96dpi.jpg");
lblBIODATA.setIcon(img);
lblBIODATA.setBounds(0, yPos, 793, 1122);
contentPane.add(lblBIODATA);
}
}
我一直在使用JScrollBar,而我本应该使用JScrollPane。此外,我意外地发现,您必须添加一行额外的代码,如“scrollPane.setViewportView(JLabelNAME);”以使其正常工作。我还注意到,在使用JFileChooser导入图像后移动滚动条后,图像将消失,但问题不大(一些调试可能会有所帮助)。contentPane.setLayout(null);挫折(…)不是问题,但仍然给了我这个想法,尽管如此。谢谢你,混蛋!!!:D 公共类DocVieweR扩展JFrame{
private static final long serialVersionUID = 1L;
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
DocVieweR frame = new DocVieweR();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public DocVieweR() {
setTitle("DocVieweR");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(818, 705);
setLocationRelativeTo(null);
setResizable(false);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblPHOTO1x1 = new JLabel("SELECT IMAGE");
lblPHOTO1x1.setFont(new Font("Segoe UI", Font.BOLD, 16));
lblPHOTO1x1.setHorizontalAlignment(SwingConstants.CENTER);
lblPHOTO1x1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JFileChooser chosenFILE = new JFileChooser();
chosenFILE.showOpenDialog(null);
File getFILE = chosenFILE.getSelectedFile();
ImageIcon pic = new ImageIcon(getFILE.getAbsolutePath());
lblPHOTO1x1.setIcon(pic);
}
});
lblPHOTO1x1.setBounds(585, 228, 129, 128);
contentPane.add(lblPHOTO1x1);
//scrollPane.setViewportView(lblPHOTO1x1);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(0, 0, 812, 676);
contentPane.add(scrollPane);
JLabel lblBIODATA = new JLabel("");
ImageIcon img = new ImageIcon("resources/BIODATA_96dpi.jpg");
lblBIODATA.setIcon(img);
lblBIODATA.setSize(793, 1122);
scrollPane.setViewportView(lblBIODATA);
contentPane.add(lblBIODATA);
}
}1)现在无法测试您的代码,但在第一次查看时,我可以看到您正在使用这一行
contentPane.setLayout(null)
和setBounds(…)
方法,这会给您带来很多问题,为什么?因为。。。2) “知道它为什么会这样吗?”为什么会这样吗?谢谢你Frakcool先生这么快的回复,你的评论清楚地说明了如何解决这个问题。如果你解决了问题,请发布一个答案,请不要叫我先生,我一点都不老……:)“contentPane.setLayout(null)和setBounds(…)不是问题”-你不知道你离事实有多远