刚编写的代码有个小问题,麻烦大家帮忙看看吧.刚编写几行代码有个问题,就是在运行的时候,后面的messagePane
刚编写的代码有个小问题,麻烦大家帮忙看看吧.
刚编写几行代码有个问题,就是在运行的时候,后面的messagePanel面板会向下移动,以至于影响下面按钮的显示.麻烦大家看一下,帮帮我指出那个错误吧.
以下是那个有问题的代码,可在Eclipse下运行一下.
- Java code
package chapter11;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Font;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.UIManager;public class ButtonDemo extends JFrame implements ActionListener{ //Declare a panle for displaying message private MessagePanel messagePanel; //Declare two buttons to move the message left and right private JButton jbtLeft,jbtRight; public static void main(String[] args){ try{ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); }catch(Exception e){ e.printStackTrace(); } ButtonDemo frame=new ButtonDemo(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(800,200); frame.setVisible(true); frame.setResizable(false); } /** * Default constructor */ public ButtonDemo(){ setTitle("Button Demo"); //Create a MessagePanel instance and set colors messagePanel=new MessagePanel("Welcome to Java"); messagePanel.setBackground(Color.yellow); JPanel jpButtons=new JPanel(); jpButtons.setLayout(new FlowLayout()); jpButtons.add(jbtLeft=new JButton("<=")); jpButtons.add(jbtRight=new JButton("=>")); jbtLeft.setMnemonic('L'); jbtRight.setMnemonic('R'); //jbtLeft.setIcon(new ImageIcon("left.gif")); jbtLeft.setToolTipText("Move message to letf"); jbtRight.setToolTipText("Move message to right"); getContentPane().setLayout(new BorderLayout()); getContentPane().add(jpButtons,BorderLayout.SOUTH); getContentPane().add(messagePanel,BorderLayout.CENTER); jbtLeft.addActionListener(this); jbtRight.addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource()==jbtLeft){ left(); } else if(e.getSource()==jbtRight){ right(); } } private void left(){ int x=messagePanel.getX(); if(x>10){ messagePanel.setX(x-10); messagePanel.repaint();//////////////////////////////////////////// } } private void right(){ int x=messagePanel.getX(); if(x<300){ messagePanel.setX(x+10); messagePanel.repaint(); } }}class MessagePanel extends JPanel{ private boolean centered; private String message; private int x=20; private int y=20; public MessagePanel(String message){ this.message=message; } public int getX(){ return x; } public void setX(int x){ this.x=x; } public int getY(){ return y; } public void setY(int y){ this.y=y; } /** * Paint the message */ public void paintComponent(Graphics g){ super.paintComponent(g); g.setFont(new Font("",Font.BOLD,20)); g.drawString(message, x, y); } public Dimension getPreferredSize(){ return new Dimension(200,50); } public Dimension getMinimumSize(){ return new Dimension(200,50); }}[解决办法]
这么长的代码,谁会去看呀,更别人找错了,以后提问直接问
------解决方案--------------------
这不是java的问题,是XP风格的问题
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());//这样得到的是xp风格,在这之前设置一个properties属性是最方便的,System.setProperty("", "no xp");类似于这样的,该属性忘了名称,以前做过,有空我再帮你查查吧。
[解决办法]
顶下 ,有点糊涂了
[解决办法]
确实晕了, 一个小问题一个上百行的类, 吓人。。
[解决办法]
我在1.5下好着呢
