我想寫一個類的程序,我卡住了。我需要創建一個形狀(我的初始),然後用它填充它JColorChooser。我已經能夠創建我最初使用的油漆和圖形。然後我可以使用g.setColor(new Color(11,139,198))填充我的形狀;我不知道如何爲此添加JColorChooser。這是我的第一篇文章,所以讓我知道我可以做些什麼來使它更容易閱讀。 這裏是我的代碼:paintComponent()和JColorChooser
/* Program - Letter
* Program Desc -
* Programmer - Bradon Fredrickson
* Class -
* Created - Oct 1, 2014
*/
package letter;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Letter
{
public static void PlainLetter()
{
/*
* Creating GUI for letter
*/
LetterDraw plainLetter = new LetterDraw();
JFrame logo = new JFrame("My Logos");
JLabel plain = new JLabel("Plain Letter");
plain.setLocation(10, 0);
plain.add(plainLetter);
Container pane = logo.getContentPane();
pane.setLayout(new GridLayout(1, 1));
logo.setLocationRelativeTo(null); // Center the frame
logo.add(plainLetter);
logo.setVisible(true);
logo.setSize(400, 200);
logo.setLocation(400, 200);
logo.setVisible(true);
logo.setDefaultCloseOperation(logo.EXIT_ON_CLOSE);
}//end plain letter
public static void main(String[] args)
{
PlainLetter();
new ColorChooser();
}//end main method
}//end Letter
第二類 - 這是拉我的對象
/* Program - ThirdLetter
* Program Desc -
* Programmer - Bradon Fredrickson
* Class -
* Created - Oct 6, 2014
*/
package letter;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Path2D;
import javax.swing.JPanel;
public class LetterDraw extends JPanel
{
/*
* Creating my shape/letter
*/
public void paint(Graphics graphics)
{
Path2D.Double path = new Path2D.Double();
Graphics2D g = (Graphics2D) graphics;
path.moveTo(17, 63);
/*
* Top Horizontal Line
*/
path.curveTo(21, 60, 21, 43, 17, 37); //left vert
path.curveTo(30, 43, 100, 43, 120, 37); //top horiz
path.curveTo(115, 45, 115, 57, 117, 62); //right vert
path.curveTo(105, 53, 60, 57, 17, 63); //bottom horiz right
/*
* Bottom Horizontal Line
*/
path.moveTo(32, 97);
path.curveTo(37, 85, 35, 79, 35, 77); //left vert
path.curveTo(45, 79, 45, 79, 100, 79); //top left horiz
path.curveTo(96, 85, 98, 92, 98, 98);//right vert
path.curveTo(89, 93, 79, 94, 32, 97);//bottom right horiz
/*
* Vertical Line
*/
path.moveTo(40, 130);
path.curveTo(48, 110, 46, 70, 37, 55); //left vert
path.curveTo(62, 55, 62, 55, 60, 55); //top horiz
path.curveTo(68, 80, 68, 100, 63, 130); //right vert
path.curveTo(60, 127, 50, 127, 40, 130);//bottom horiz
g.setRenderingHint(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.setStroke(new BasicStroke(3));
//g.setStroke(new BasicStroke(4, BasicStroke.JOIN_BEVEL, 0));
g.draw(path);
g.setColor(new Color(11, 139, 198));
g.fill(path);
}//end paint
}//end LetterDraw
第三 - 這是我的colorChooser
/* Program - ColorChooser
* Program Desc -
* Programmer - Bradon Fredrickson
* Class -
* Created - Oct 10, 2014
*/
package letter;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.colorchooser.ColorSelectionModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class ColorChooser
{
/**
* Creating the color chooser
*/
public ColorChooser()
{
JFrame frame = new JFrame("JColorChooser Popup");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JLabel label = new JLabel("www.java2s.com", JLabel.CENTER);
label.setFont(new Font("Serif", Font.BOLD | Font.ITALIC, 48));
frame.add(label, BorderLayout.NORTH);
final JColorChooser colorChooser = new JColorChooser(label.
getBackground());
ColorSelectionModel model = colorChooser.getSelectionModel();
ChangeListener changeListener = new ChangeListener()
{
public void stateChanged(ChangeEvent changeEvent)
{
Color newForegroundColor = colorChooser.getColor();
label.setForeground(newForegroundColor);
}
};
model.addChangeListener(changeListener);
frame.add(colorChooser, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}//end colorChooser
}//end colorChooser class
現在,我得到2個JFrames 1我的形狀和JColorChooser的1。我想把它們全部放在1個框架中。
「Swing程序應該重寫'的paintComponent()',而不是覆蓋'的paint()'。」 - [*繪畫在AWT和Swing:該漆方法*](HTTP:/ /www.oracle.com/technetwork/java/painting-140037.html#callbacks)。 – trashgod 2014-10-10 14:01:14