1
1
package top.ntutn.floatclock.coloredit
2
2
3
- import androidx.compose.material.TextField
3
+ import androidx.compose.foundation.layout.Column
4
+ import androidx.compose.material.Slider
5
+ import androidx.compose.material.SliderDefaults
6
+ import androidx.compose.material.Text
4
7
import androidx.compose.runtime.*
5
8
import androidx.compose.ui.awt.ComposeWindow
9
+ import androidx.compose.ui.graphics.Color
10
+ import androidx.compose.ui.unit.sp
6
11
import java.awt.Dimension
7
12
import javax.swing.JFrame
8
13
9
14
object ColorEditPanel
10
15
11
- fun ColorEditPanel.showEditPanel (lastColor : String , editColorCallback : (String ) -> Unit ) {
16
+ fun ColorEditPanel.showEditPanel (lastColor : java.awt. Color , editColorCallback : (java.awt. Color ) -> Unit ) {
12
17
ComposeWindow ().also {
13
18
it.setContent {
14
19
ColorEditContent (lastColor, editColorCallback)
@@ -22,10 +27,32 @@ fun ColorEditPanel.showEditPanel(lastColor: String, editColorCallback: (String)
22
27
}
23
28
24
29
@Composable
25
- fun ColorEditContent (lastColor : String , editColorCallback : (String ) -> Unit ) {
26
- var colorString by remember { mutableStateOf(lastColor) }
27
- TextField (colorString, onValueChange = {
28
- colorString = it
29
- editColorCallback(it)
30
- })
31
- }
30
+ fun ColorEditContent (lastColor : java.awt.Color , editColorCallback : (java.awt.Color ) -> Unit ) {
31
+ Column {
32
+ var red by remember { mutableStateOf(0 ) }
33
+ var green by remember { mutableStateOf(0 ) }
34
+ var blue by remember { mutableStateOf(0 ) }
35
+
36
+ LaunchedEffect (lastColor) {
37
+ red = lastColor.red
38
+ green = lastColor.green
39
+ blue = lastColor.blue
40
+ }
41
+
42
+ Text (text = " #${Integer .toHexString(red) + Integer .toHexString(green) + Integer .toHexString(blue)} " , color = Color (red, green, blue), fontSize = 20 .sp)
43
+
44
+ val onSelected = {
45
+ editColorCallback(java.awt.Color (red, green, blue))
46
+ }
47
+
48
+ Slider (colors = SliderDefaults .colors(thumbColor = Color (red, 0 , 0 )), value = red.toFloat(), onValueChange = {
49
+ red = it.toInt()
50
+ }, onValueChangeFinished = onSelected, valueRange = 0f .. 255f , steps = 256 )
51
+ Slider (colors = SliderDefaults .colors(thumbColor = Color (0 , green, 0 )), value = green.toFloat(), onValueChange = {
52
+ green = it.toInt()
53
+ }, onValueChangeFinished = onSelected, valueRange = 0f .. 255f , steps = 256 )
54
+ Slider (colors = SliderDefaults .colors(thumbColor = Color (0 , 0 , blue)), value = blue.toFloat(), onValueChange = {
55
+ blue = it.toInt()
56
+ }, onValueChangeFinished = onSelected, valueRange = 0f .. 255f , steps = 256 )
57
+ }
58
+ }
0 commit comments