import javax.swing.* ;
import javax.swing.border.EmptyBorder ;
import javax.swing.border.EtchedBorder ;
import java.awt.* ;
import java.awt.event.ActionEvent ;
import java.awt.event.ActionListener ;
import java.util.HashMap ;
import java.util.LinkedHashMap ;
private static final String TASTE_SYOYU
= "醤油" ; private static final String TASTE_MISO
= "味噌" ; private static final String TASTE_SIO
= "塩" ; private static final String TOPPING_PORK
= "チャーシュー" ; private static final String TOPPING_NEGI
= "ネギ" ; private static final String TOPPING_MENMA
= "メンマ" ;
private HashMap
< String , AbstractButton
> tastesAndToppings
; private HashMap
< String , Integer
> prices
; private JLabel fee, result, unit
;
public static void main
( String [ ] args
) { Ramen ramen = new Ramen( "ラーメンの代金" ) ;
ramen.setVisible ( true ) ;
}
setTitle( title) ;
setSize( 350 , 200 ) ;
setLocationRelativeTo( null ) ;
setDefaultCloseOperation
( JFrame .
EXIT_ON_CLOSE ) ;
panel.setLayout ( layout) ;
prices = new HashMap<> ( ) ;
prices.put ( TASTE_SYOYU, 500 ) ;
prices.put ( TASTE_MISO, 600 ) ;
prices.put ( TASTE_SIO, 550 ) ;
prices.put ( TOPPING_PORK, 200 ) ;
prices.put ( TOPPING_NEGI, 100 ) ;
prices.put ( TOPPING_MENMA, 100 ) ;
tastesAndToppings = new LinkedHashMap<> ( ) ;
tastesAndToppings.
put ( TASTE_SYOYU,
new JRadioButton ( TASTE_SYOYU
) ) ; tastesAndToppings.
put ( TASTE_MISO,
new JRadioButton ( TASTE_MISO
) ) ; tastesAndToppings.
put ( TASTE_SIO,
new JRadioButton ( TASTE_SIO
) ) ; tastesAndToppings.
put ( TOPPING_PORK,
new JCheckBox ( TOPPING_PORK
) ) ; tastesAndToppings.
put ( TOPPING_NEGI,
new JCheckBox ( TOPPING_NEGI
) ) ; tastesAndToppings.
put ( TOPPING_MENMA,
new JCheckBox ( TOPPING_MENMA
) ) ;
group.add ( tastesAndToppings.get ( TASTE_SYOYU) ) ;
group.add ( tastesAndToppings.get ( TASTE_MISO) ) ;
group.add ( tastesAndToppings.get ( TASTE_SIO) ) ;
tastesAndToppings.forEach ( ( key, value) -> {
panel.add ( value) ;
value.addActionListener ( this ) ;
} ) ;
result.setOpaque ( true ) ;
result.
setBackground ( Color .
WHITE ) ;
panel.add ( fee) ;
panel.add ( result) ;
panel.add ( unit) ;
tastesAndToppings.get ( TASTE_SYOYU) .doClick ( ) ;
}
int resultPrice = tastesAndToppings.values ( ) .stream ( )
.mapToInt ( value -> prices.get ( value.getText ( ) ) )
.sum ( ) ;
result.
setText ( String .
valueOf ( resultPrice
) ) ; }
}
aW1wb3J0IGphdmF4LnN3aW5nLio7CmltcG9ydCBqYXZheC5zd2luZy5ib3JkZXIuRW1wdHlCb3JkZXI7CmltcG9ydCBqYXZheC5zd2luZy5ib3JkZXIuRXRjaGVkQm9yZGVyOwppbXBvcnQgamF2YS5hd3QuKjsKaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OwppbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXI7CmltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOwoKcHVibGljIGNsYXNzIFJhbWVuIGV4dGVuZHMgSkZyYW1lIGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIgewoKICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQVNURV9TWU9ZVSA9ICLphqTmsrkiOwogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBU1RFX01JU08gPSAi5ZGz5ZmMIjsKICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQVNURV9TSU8gPSAi5aGpIjsKICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUT1BQSU5HX1BPUksgPSAi44OB44Oj44O844K344Ol44O8IjsKICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUT1BQSU5HX05FR0kgPSAi44ON44KuIjsKICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUT1BQSU5HX01FTk1BID0gIuODoeODs+ODniI7CgogICAgcHJpdmF0ZSBIYXNoTWFwPFN0cmluZywgQWJzdHJhY3RCdXR0b24+IHRhc3Rlc0FuZFRvcHBpbmdzOwogICAgcHJpdmF0ZSBIYXNoTWFwPFN0cmluZywgSW50ZWdlcj4gcHJpY2VzOwogICAgcHJpdmF0ZSBKTGFiZWwgZmVlLCByZXN1bHQsIHVuaXQ7CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFJhbWVuIHJhbWVuID0gbmV3IFJhbWVuKCLjg6njg7zjg6Hjg7Pjga7ku6Pph5EiKTsKICAgICAgICByYW1lbi5zZXRWaXNpYmxlKHRydWUpOwogICAgfQoKICAgIFJhbWVuKFN0cmluZyB0aXRsZSkgewogICAgICAgIHNldFRpdGxlKHRpdGxlKTsKICAgICAgICBzZXRTaXplKDM1MCwgMjAwKTsKICAgICAgICBzZXRMb2NhdGlvblJlbGF0aXZlVG8obnVsbCk7CiAgICAgICAgc2V0RGVmYXVsdENsb3NlT3BlcmF0aW9uKEpGcmFtZS5FWElUX09OX0NMT1NFKTsKCiAgICAgICAgSlBhbmVsIHBhbmVsID0gbmV3IEpQYW5lbCgpOwogICAgICAgIEdyaWRMYXlvdXQgbGF5b3V0ID0gbmV3IEdyaWRMYXlvdXQoMywgMyk7CiAgICAgICAgcGFuZWwuc2V0TGF5b3V0KGxheW91dCk7CgogICAgICAgIHByaWNlcyA9IG5ldyBIYXNoTWFwPD4oKTsKICAgICAgICBwcmljZXMucHV0KFRBU1RFX1NZT1lVLCA1MDApOwogICAgICAgIHByaWNlcy5wdXQoVEFTVEVfTUlTTywgNjAwKTsKICAgICAgICBwcmljZXMucHV0KFRBU1RFX1NJTywgNTUwKTsKICAgICAgICBwcmljZXMucHV0KFRPUFBJTkdfUE9SSywgMjAwKTsKICAgICAgICBwcmljZXMucHV0KFRPUFBJTkdfTkVHSSwgMTAwKTsKICAgICAgICBwcmljZXMucHV0KFRPUFBJTkdfTUVOTUEsIDEwMCk7CgogICAgICAgIHRhc3Rlc0FuZFRvcHBpbmdzID0gbmV3IExpbmtlZEhhc2hNYXA8PigpOwogICAgICAgIHRhc3Rlc0FuZFRvcHBpbmdzLnB1dChUQVNURV9TWU9ZVSwgbmV3IEpSYWRpb0J1dHRvbihUQVNURV9TWU9ZVSkpOwogICAgICAgIHRhc3Rlc0FuZFRvcHBpbmdzLnB1dChUQVNURV9NSVNPLCBuZXcgSlJhZGlvQnV0dG9uKFRBU1RFX01JU08pKTsKICAgICAgICB0YXN0ZXNBbmRUb3BwaW5ncy5wdXQoVEFTVEVfU0lPLCBuZXcgSlJhZGlvQnV0dG9uKFRBU1RFX1NJTykpOwogICAgICAgIHRhc3Rlc0FuZFRvcHBpbmdzLnB1dChUT1BQSU5HX1BPUkssIG5ldyBKQ2hlY2tCb3goVE9QUElOR19QT1JLKSk7CiAgICAgICAgdGFzdGVzQW5kVG9wcGluZ3MucHV0KFRPUFBJTkdfTkVHSSwgbmV3IEpDaGVja0JveChUT1BQSU5HX05FR0kpKTsKICAgICAgICB0YXN0ZXNBbmRUb3BwaW5ncy5wdXQoVE9QUElOR19NRU5NQSwgbmV3IEpDaGVja0JveChUT1BQSU5HX01FTk1BKSk7CgogICAgICAgIEJ1dHRvbkdyb3VwIGdyb3VwID0gbmV3IEJ1dHRvbkdyb3VwKCk7CiAgICAgICAgZ3JvdXAuYWRkKHRhc3Rlc0FuZFRvcHBpbmdzLmdldChUQVNURV9TWU9ZVSkpOwogICAgICAgIGdyb3VwLmFkZCh0YXN0ZXNBbmRUb3BwaW5ncy5nZXQoVEFTVEVfTUlTTykpOwogICAgICAgIGdyb3VwLmFkZCh0YXN0ZXNBbmRUb3BwaW5ncy5nZXQoVEFTVEVfU0lPKSk7CgogICAgICAgIHRhc3Rlc0FuZFRvcHBpbmdzLmZvckVhY2goKGtleSwgdmFsdWUpIC0+IHsKICAgICAgICAgICAgcGFuZWwuYWRkKHZhbHVlKTsKICAgICAgICAgICAgdmFsdWUuYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CiAgICAgICAgfSk7CgogICAgICAgIGZlZSA9IG5ldyBKTGFiZWwoIuaWmemHkSIpOwogICAgICAgIHJlc3VsdCA9IG5ldyBKTGFiZWwoKTsKICAgICAgICB1bml0ID0gbmV3IEpMYWJlbCgi5YaGIik7CgogICAgICAgIHJlc3VsdC5zZXRCb3JkZXIobmV3IEV0Y2hlZEJvcmRlcihFdGNoZWRCb3JkZXIuTE9XRVJFRCkpOwogICAgICAgIHVuaXQuc2V0Qm9yZGVyKG5ldyBFbXB0eUJvcmRlcigwLCAxMCwgMCwgMCkpOwoKICAgICAgICByZXN1bHQuc2V0T3BhcXVlKHRydWUpOwogICAgICAgIHJlc3VsdC5zZXRCYWNrZ3JvdW5kKENvbG9yLldISVRFKTsKCiAgICAgICAgcGFuZWwuYWRkKGZlZSk7CiAgICAgICAgcGFuZWwuYWRkKHJlc3VsdCk7CiAgICAgICAgcGFuZWwuYWRkKHVuaXQpOwoKICAgICAgICB0YXN0ZXNBbmRUb3BwaW5ncy5nZXQoVEFTVEVfU1lPWVUpLmRvQ2xpY2soKTsKCiAgICAgICAgZ2V0Q29udGVudFBhbmUoKS5hZGQocGFuZWwsIEJvcmRlckxheW91dC5DRU5URVIpOwogICAgfQoKICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CiAgICAgICAgaW50IHJlc3VsdFByaWNlID0gdGFzdGVzQW5kVG9wcGluZ3MudmFsdWVzKCkuc3RyZWFtKCkKICAgICAgICAgICAgICAgIC5maWx0ZXIoQWJzdHJhY3RCdXR0b246OmlzU2VsZWN0ZWQpCiAgICAgICAgICAgICAgICAubWFwVG9JbnQodmFsdWUgLT4gcHJpY2VzLmdldCh2YWx1ZS5nZXRUZXh0KCkpKQogICAgICAgICAgICAgICAgLnN1bSgpOwogICAgICAgIHJlc3VsdC5zZXRUZXh0KFN0cmluZy52YWx1ZU9mKHJlc3VsdFByaWNlKSk7CiAgICB9Cgp9